撤消git快进合并

Iva*_*gin 13 git git-merge fast-forward

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

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

谢谢你的帮助

her*_*man 31

git reflog show testBranch

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

git reset --keep testBranch@{1}

恢复到以前的状态.

  • 一种易于理解的好方法!这应该被标记为答案 (2认同)

cfo*_*ish 5

如果您知道需要本地 testBranch 的修订版,那么简单如下:

git checkout testBranch
git reset --hard <revision>
Run Code Online (Sandbox Code Playgroud)

如果您有类似的更改(最旧的在顶部):

<point>
<your_change_a>
<change_from_someone_else>
<your_change_b>
<testBranch>
Run Code Online (Sandbox Code Playgroud)

你可以:

git checkout testBranch
git reset --hard <point>
git cherry-pick <your_change_a>
git cherry-pick <your_change_b>
Run Code Online (Sandbox Code Playgroud)