2

我正在尝试还原错误的合并,但是两个命令的还原更改看起来都不正确。

这就是我进行合并提交的方式:

# 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 diff b2e de9 确实显示了提交的内容。我感到困惑的一个原因是因为删除/保留冲突没有显示在差异中,所以我认为 git 没有向我显示更改。diff'ing to cf4,来自 的提交master,让我更加困惑,因为我不太明白发生了什么。没有必要回答这个问题。

4

1 回答 1

1

Git revert可能不是你想做的。回到合并之前的位置的最简单方法是改为运行git reset --hard HEAD^(或使用您想要返回的提交的 SHA1,而不是HEAD^),特别是如果您自己工作,或者如果您尚未推送合并和/或还原。如果您使用 恢复合并revert,您可能会遇到无法轻松重新合并您恢复的提交的情况,恢复本身被记录为新提交,并且通常会很快变得混乱。有关示例和策略,请参见此处:http: //progit.org/2010/03/02/undoing-merges.html

于 2010-09-27T21:15:11.603 回答