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

Art*_*ion 8 git git-revert git-merge-conflict

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

例:

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

我本质上想重新解决冲突问题.

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

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

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

这样做有什么优雅的方式吗?

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

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

任何帮助都感激不尽.

谢谢.

Sch*_*ern 11

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

你有类似的东西.

1 - 2 - 5 - 6 - 7 - 9 - 10 [A]
     \         /
      3 - 4 - 8
Run Code Online (Sandbox Code Playgroud)

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

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

git checkout 6
git merge 8
Run Code Online (Sandbox Code Playgroud)

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

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

git checkout A
git stash pop
Run Code Online (Sandbox Code Playgroud)

由于A的变化,你可能会因此而产生新的冲突.没关系.正常解决它们并提交.