如何恢复使用策略=我们的合并?

Hig*_*ife 9 git git-merge git-revert

我正在使用几周前进行合并的存储库,我们刚刚发现它使用了--strategy=ours标志(它应该使用--strategy-option =我们的标志),因此不对HEAD应用任何更改.但是,我们需要应用更改.Git已经将分支识别为已合并以及分支历史中的提交.

无法使用此类合并进行还原 git revert -m ...

恢复和/或重新应用合并以更改文件的正确方法是什么?

master  A - B - E - F - G ---> L - M - N
             \     /
topic         C - D
Run Code Online (Sandbox Code Playgroud)

合并提交(F)将是此方案的罪魁祸首.

Hig*_*ife 7

我发现了这个问题的解决方案.Linus写的关于恢复错误合并的信中写着:如何恢复错误的合并.在git merge --strategy=ours topic我们的情况并不打算.即使它是一个错误的合并,它也无法恢复,并且长期被推动,具有与恢复合并提交相同的效果,而无法恢复恢复提交.

解决方案是签出主题分支,rebase --no-ff从第一次提交运行,然后将该分支合并回master.

git checkout topic
git rebase -i --no-ff <C>
git checkout master
git merge topic
Run Code Online (Sandbox Code Playgroud)

这具有屈服的效果:

fixed–topic   C'–––D'––––––––––––––––––––-
             /                            \
master  A–––B–––E–––F–––G –––> L–––M–––N–––F2
             \     /
topic         C–––D
Run Code Online (Sandbox Code Playgroud)

要深入了解这一点,请阅读使用rebase选项重新创建分支的字母如何还原错误合并的最后一部分--no-ff.