我想重新创建合并冲突,以便我可以第二次正确解决它。
例:
- 分支"A"已签出。
- 分支"B"合并到。
- 通过合并解决的冲突(创建合并提交)。
- 推送到远程。
- 其他人合并到分支"A"并推送到远程。
- 哦,亲爱的,我已经意识到我的冲突解决方案是错误的,我选择了他们的而不是我的,无论如何。
- 现在怎么办?
我基本上想重做冲突解决部分。
我无法选择重新设置我的HEAD,因为分支已经被推到遥控器上;并且在我意识到冲突解决是错误的之前,其他人有可能已经承诺了。
我还想避免直接修复分支"A"。
我想避免采摘樱桃。我知道我可以做一个标准的恢复和挑选我的提交等,我不想这样做。
那么有什么优雅的方法可以做到这一点吗?
我尝试恢复合并提交,然后恢复并再次合并分支"B",但不幸的是,它没有要求我第二次解决任何冲突,我只是收到标准的"已经是最新的"消息。
简而言之,我想重新创建我的冲突,以便我可以第二次正确解决它。
任何帮助将不胜感激。
谢谢。
这里有两个步骤。首先是重新创建合并和冲突。第二种是将其应用于分支的新尖端。
你有这样的东西。
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
.这会将差异保存在称为"藏匿处"的角落中。这只是保存补丁的一种更正式的方式。
现在我们已经有了本来会发生的冲突解决方案,签出 A 并从仓库应用修复程序。
git checkout A
git stash pop
由于 A 发生了变化,您可能会从中获得新的冲突。没关系。正常解决它们并提交。