解决合并冲突并提交后,很明显我的手动合并冲突解决方法是错误的。我已经上演、提交并推送了该存储库。如何使冲突文件恢复到冲突状态,以便我可以以不同的方式解决它?
请注意,此时为时已晚git checkout -m
因为我已经提交了错误的合并解决方案。
从一个干净的工作目录开始,我会硬重置回合并之前,启动一个新分支,然后再次执行合并。然后,您可以在原始合并结果分支和新分支之间执行差异,以获得要应用于原始分支的补丁文件。由于您已经推送了结果,因此您将需要创建一个新的提交来纠正合并提交,而不是在编辑历史记录后执行强制推送。
过于详细的版本:
如果您当前的历史记录看起来像这样并且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
希望这有帮助。如果您对任何事情感到困惑,请告诉我。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)