推送后重做坏git冲突解决方案

时间:2017-03-24 18:59:18

标签: git git-revert git-merge-conflict

我想重新创建合并冲突,以便我可以在第二轮正确解决它。

示例:

  • 分支'A'签出。
  • 分支'B'合并为。
  • 从合并解决的冲突(创建合并提交)。
  • 推送到远程。
  • 其他人合并到分支'A'并推送到远程。
  • 哦亲爱的,我已经意识到我的冲突解决方案是错误的,我和他们一起去了,而不是我的。无论如何。
  • 现在是什么?

我基本上想重新做冲突解决部分

我没有选择重新设置我的HEAD,因为分支已被推送到遥控器;在我意识到冲突解决是错误的之前,还有可能让其他人投入其中。

我也想避免直接修复分支'A'。

我想避免樱桃采摘。我知道我可以做一个标准的恢复和樱桃选择我的提交等,我不想这样做。

那么有没有优雅的方法呢?

我已经尝试恢复合并提交然后再次恢复恢复和合并分支'B',但不幸的是它没有要求我第二次解决任何冲突,我刚刚得到标准的“已经是最新的”消息。

简单地说,我想重新创建冲突,以便我可以在第二轮正确解决。

非常感谢任何帮助。

感谢。

1 个答案:

答案 0 :(得分:10)

这里有两个步骤。首先是重新创建合并和冲突。第二个是将它应用于分支的新提示。

你有类似的东西。

1 - 2 - 5 - 6 - 7 - 9 - 10 [A]
     \         /
      3 - 4 - 8

7是合并提交,你想重做它并在A之上应用修复。重新引用可能会变得混乱,因为太多的工作已经堆积在最上面。

首先,让我们重新创建合并冲突。要做到这一点,我们将重新做一遍。结帐6,这是合并时A的位置,并将其与8合并。

git checkout 6
git merge 8

您必须使用git log --graph来确定实际的提交ID。现在我们有合并冲突。像 一样解决它,但不提交 。相反,把它藏起来。 git stash save。这将在名为"the stash"的角落中保存差异。这只是保存补丁的一种更正式的方式。

既然我们已经解决了冲突问题,请检查A并从存储中应用修复。

git checkout A
git stash pop

由于A已发生变化,因此您可能会遇到新的冲突。没关系。正常解决并提交。