代码之家  ›  专栏  ›  技术社区  ›  superuser

git revert merge-两条主线看起来都不正确

  •  2
  • superuser  · 技术社区  · 14 年前

    这是我如何使合并提交:

    # 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
    

    更新:The de9 commit是正确的恢复方式,git diff b2e de9确实显示了提交的内容。我感到困惑的一个原因是diff中没有显示delete/keep冲突,所以我认为git没有显示一些更改。区别于 cf4 ,提交自 master ,更让我困惑,因为我不太明白发生了什么。 没有必要回答这个问题。

    1 回复  |  直到 14 年前
        1
  •  1
  •   urschrei    14 年前

    Git revert 可能不是你想做的。回到合并前的状态最简单的方法就是跑步 git reset --hard HEAD^ 而是(或者使用您希望移回的提交的SHA1,而不是 HEAD^ ),尤其是在您自己工作的情况下,或者您还没有推动合并和/或恢复。如果使用还原合并 revert ,您可能会遇到这样的情况:您无法轻松地重新合并已还原的提交,还原本身将被记录为新提交,并且通常很快就会变得混乱。示例和策略请参见此处: http://progit.org/2010/03/02/undoing-merges.html