Git:如何在不覆盖历史记录的情况下还原分支合并?

Ser*_*rov 17 git merge branch revert

我有两个分支:masteropengl.我最近完成了opengl分支的实现(或者至少我是这么认为)并决定将其合并到master:

git checkout master
git merge opengl
git push
Run Code Online (Sandbox Code Playgroud)

在我这样做之后,一些正在master分支机构工作的开发人员完成了我的更改,结果发现我的实现与他们的一些代码冲突了.因此,我想在master分支上恢复合并操作,但不覆盖历史记录.

请注意,我希望能够最终合并opengl分支master(在我修复所有错误之后).因此,只需检查旧版本master并提交它将无法正常工作 - 新创建的提交将从我opengl尝试合并它时取消我的更改.

谢谢.

Von*_*onC 18

cebewee提到的文档" 如何还原错误的合并 " 解释了为什么在恢复合并时git revert很棘手.

因此合并仍然存在,并且它仍将被视为将两个分支连接在一起,并且未来的合并将看到合并作为最后的共享状态 - 并且恢复合并所带来的恢复将不会影响该合并.
如果你认为"恢复"为"撤消",那么你将永远错过这部分恢复.
是的,它会撤消数据,但不会,它不会撤消历史记录.

git revert这里是正确的解决方案,但是当你想要再次合并该分支时,它将在未来产生影响.
然后,下一个合并将首先"恢复恢复",然后合并分支.

  • 我想强调最后两个短语,因为它们非常重要(容易错过,然后不理解不恢复还原提交的后果.) (4认同)