我有这种情况:在一些 testBranch 上工作了一段时间,我想与 master 同步,所以我做了 git checkout testBranch 和 git merge master/testBranch
所以现在我的分支已与 master 同步,但后来我发现我想撤消该合并,问题是合并是通过快进完成的,现在我的提交历史与 master 提交和 testBranch 提交混合在一起,我不知道如何在我的 testBranch 上合并之前恢复到状态。
谢谢你的帮助
我有这种情况:在一些 testBranch 上工作了一段时间,我想与 master 同步,所以我做了 git checkout testBranch 和 git merge master/testBranch
所以现在我的分支已与 master 同步,但后来我发现我想撤消该合并,问题是合并是通过快进完成的,现在我的提交历史与 master 提交和 testBranch 提交混合在一起,我不知道如何在我的 testBranch 上合并之前恢复到状态。
谢谢你的帮助
git reflog show testBranch
应将快进合并显示为最后一项 ( {0}
)。在确定是这种情况后,结帐testBranch
然后就做
git reset --keep testBranch@{1}
恢复到以前的状态。
如果您知道要在其中使用本地 testBranch 的修订版,则很简单:
git checkout testBranch
git reset --hard <revision>
如果您有类似的更改(最旧的在顶部):
<point>
<your_change_a>
<change_from_someone_else>
<your_change_b>
<testBranch>
你可以:
git checkout testBranch
git reset --hard <point>
git cherry-pick <your_change_a>
git cherry-pick <your_change_b>