16

我有这种情况:在一些 testBranch 上工作了一段时间,我想与 master 同步,所以我做了 git checkout testBranch 和 git merge master/testBranch

所以现在我的分支已与 master 同步,但后来我发现我想撤消该合并,问题是合并是通过快进完成的,现在我的提交历史与 master 提交和 testBranch 提交混合在一起,我不知道如何在我的 testBranch 上合并之前恢复到状态。

谢谢你的帮助

4

2 回答 2

38

git reflog show testBranch

应将快进合并显示为最后一项 ( {0})。在确定是这种情况后,结帐testBranch然后就做

git reset --keep testBranch@{1}

恢复到以前的状态。

于 2015-09-25T13:42:06.733 回答
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>
于 2013-06-11T10:31:24.137 回答