【问题标题】:git revert merge - neither mainline looks correctgit revert merge - 主线看起来都不正确
【发布时间】:2011-04-17 14:57:42
【问题描述】:

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

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

# 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 没有向我显示更改。与cf4 的差异,来自master 的提交,让我更加困惑,因为我不太明白发生了什么。 这个问题不用回答了。

【问题讨论】:

    标签: git merge revert


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-18
      • 1970-01-01
      • 2016-09-06
      • 1970-01-01
      • 2021-06-10
      • 1970-01-01
      相关资源
      最近更新 更多