解决合并冲突并提交后,很明显我的手动合并冲突解决方案错误。我已经上演,承诺并推动了回购。 如何将冲突的文件重新置于冲突状态,以便我可以采用不同的方式解决?
请注意,git checkout -m
为时已晚,因为我已经提交了错误的合并解决方案。
答案 0 :(得分:1)
从干净的工作目录开始,我会在合并之前重新设置,重新启动新分支,然后再次执行合并。然后,您可以在原始合并结果分支和新分支之间执行差异,以获取要在原始分支上应用的补丁文件。由于您已经推送了结果,因此您需要创建一个新的提交来更正合并提交,而不是在编辑历史记录后执行强制推送。
过于详细的版本:
如果您当前的历史记录看起来像这样,c
是您想要更改的合并提交。
a - c - d <-HEAD/master
/
b
从 完全 干净的工作目录开始。
git branch old_merge <sha1 of c> // create branch for original merge
git checkout -b new_merge <sha1 of a> // create and checkout branch before merge
// re-merge branch
这将创建这样的东西......
old_merge
∨
a - c - d <-master
X
b - c' <-HEAD
∧
new_merge
这可能真的令人困惑,但希望你能得到这个想法。现在,您可以在old_merge
分支和new_merge
分支之间执行差异,以获取您需要在master上进行的更改。
git diff old_merge..new_merge
您可以使用patch
UNIX实用程序在再次检出master之后应用两个分支之间的差异。
git checkout master
git diff old_merge..new_merge | patch -p1
希望这会有所帮助。如果你对任何事感到困惑,请告诉我。