2010-09-27 65 views
2

我试图恢复错误的合并,但两个命令的恢复更改看起来不正确。git恢复合并 - 主线看起来都不正确

这是我提出的合并提交:

# merge master into branch: 
git checkout branch 
git merge master 
# resolve conflicts 
git commit 
git push 

现在我想恢复与合并:

git log b2e 
    commit b2e... 
    Merge: de9... cf4... 
git revert -m 1 -n b2e 

的问题是,git status表明,它只会撤消冲突我解决了,而不是整个合并。 命令git revert -m 2 -n b2e将撤消在合并之前对分支所做的更改,我也不想这两者。

第二个问题是: 如何显示合并提交中更改的内容?

git show b2e  # only shows the conflicts I resolved 
git diff b2e de9 # does the same 
git diff b2e cf4 # shows what is different between the branch and master 

更新:de9提交了恢复到和git的差异B2E DE9没有显示什么承诺是正确的。我感到困惑的一个原因是因为删除/保留冲突没有显示在diff中,所以我认为git没有显示出我的变化。差异到cf4,承诺master,更让我困惑,因为我不太明白发生了什么。 有没有必要回答这个问题。

回答

1

Git revert可能不是你想要做的。在合并之前,最简单的方法是运行git reset --hard HEAD^(或者使用您想要移回的提交的SHA1,而不是HEAD^),尤其是如果您在自己工作,或者如果你还没有推动你的合并和/或恢复。如果您使用revert恢复合并,则可能会遇到无法轻松重新合并您恢复的提交的情况,恢复本身会记录为新的提交,并且通常可能会很快导致混淆。在这里看到的例子和策略:http://progit.org/2010/03/02/undoing-merges.html