我正在使用一个存储库,其中几周前执行了合并,我们刚刚发现它使用了--strategy=ours
标志(它应该使用 --strategy-option=ours 标志),因此不会对 HEAD 应用任何更改。但是,我们需要应用这些更改。 Git 已经识别出正在合并的分支以及分支历史记录中的提交。
这种合并不能使用以下方式恢复git revert -m ...
恢复和/或重新应用合并以更改文件的正确方法是什么?
master A - B - E - F - G ---> L - M - N
\ /
topic C - D
合并提交(F)
将是这种情况的罪魁祸首。
我已经找到了解决这个问题的办法。 Linus 在信中写了关于恢复错误合并的全部内容:如何恢复错误的合并 http://www.kernel.org/pub/software/scm/git/docs/howto/revert-a-faulty-merge.txt.
The git merge --strategy=ours topic
在我们的例子中并不是有意的。即使它是一个错误的合并,它也无法恢复,并且已经被推送了很长时间,与恢复合并提交具有相同的效果,而无法恢复恢复提交。
解决方案是签出主题分支,运行rebase --no-ff
从第一次提交开始,然后将该分支合并回 master。
git checkout topic
git rebase -i --no-ff <C>
git checkout master
git merge topic
这产生了以下效果:
fixed–topic C'–––D'––––––––––––––––––––-
/ \
master A–––B–––E–––F–––G –––> L–––M–––N–––F2
\ /
topic C–––D
要真正深入了解这一点,请阅读这封信的最后部分如何恢复错误的合并 http://www.kernel.org/pub/software/scm/git/docs/howto/revert-a-faulty-merge.txt使用--no-ff
rebase 选项来重新创建分支。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)