我遇到这种情况: 在一些testBranch上工作了一段时间,我想与master同步,所以我做了 git checkout testBranch和 git merge master / testBranch
所以现在我的分支与master同步,但后来我发现我想要撤消合并,问题是合并是用快进完成的,现在我的提交历史与主提交和testBranch提交混合,我不知道知道如何在我的testBranch上合并之前恢复状态。
感谢您的帮助
答案 0 :(得分:23)
git reflog show testBranch
应将快进合并显示为最后一项({0}
)。
在确定是这种情况后,请结帐testBranch
,然后执行
git reset --keep testBranch@{1}
恢复到之前的状态。
答案 1 :(得分:4)
如果你知道你想要你的本地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>