问题是:我们要将topic
合并到master
,但topic
是master
的祖先,因此合并是无操作。 topic
和master
之间的提交已将先前topic
的合并恢复为master
。它使用reset
而不是revert
来做到这一点。现在,diff
之间的master..topic
显示了我们要应用的所有更改。我们如何应用这些变化?
C B A D
master * ---- * ---- * ---- * ---- *
\
\
topic * ---- * ---- * ---- *
A
是merge
。B
还原了A
和D
但未使用revert
。C
添加了其他提交编辑:
B
还原的时间超过A
,但我们只想重新应用A
引入的更改。因此,还原B
无法实现我们的目标,因为它将恢复D
。
答案 0 :(得分:3)
有一些选择:
您可以还原B并还原D. 恢复B将恢复D,因此您再次恢复D.
如果差异显示您想要应用的内容,您可以从差异创建补丁文件并将该补丁文件应用于主分支。
创建补丁:
git diff master..topic > file.patch
转到掌握并应用补丁:
git apply file.patch
答案 1 :(得分:0)