我如何将 master 回滚到之前的提交,进行更改,然后重新应用回滚的所有内容?

How do I roll back master to a prior commit, make a change, and then reapply everything that was rolled back?

我有一个 master 分支和一个 development 分支目前都在同步。

我需要将我的主分支回滚到之前的提交(至少 30 次提交),这样我才能进行更改并提交。然后我想重新应用所有内容并将其恢复到与开发同步的当前日期。

我可以通过将 master 恢复到之前的提交来做到这一点吗?进行更改,提交,然后将 development 合并到 master 中。那行得通吗?有没有更简单或更合适的方法来做到这一点?

在此先感谢您的帮助!

可以使用git reset --hard master@{1.days.ago}

您还可以指定时间,例如 1.hours.ago、5.days.ago 等

之后您可以申请 git 提交。

有几种不同的方法可以做到这一点:rebase/cherry-pick/reset+merge。它看起来像这样:

Before:

* C4 <- [master] [development]
* C3
* C2
* C1

reset master to C1, then commit Alteration A1:

* A1 <- [master]
| * C4 <- [development]
| * C3
| * C2
|/
* C1

Option 1: Bring up to date /w development (via merge):

* C5 <- [master]
|\
| * C4 <- [development]
| * C3
| * C2
* | A1
|/
* C1

Option 2: Bring up to date /w development (via rebase or cherry-pick):

* C4' <- [master] [development2]
* C3'
* C2'
* A1
| * C4 <- [development]
| * C3
| * C2
|/
* C1

但是您应该有充分的理由回滚 master 并更改历史记录——最好只是在顶部添加更多更改。

也许您可以提供更多详细信息,以便给出 better/specific 推荐?