git - 将 git revert -m 合并到主分支
问题描述
我有以下情况
M--o--o------------------
\ \
\ B-----------------
\
C-----------------
我对分支 B 和 C 进行了一些修改。在某个时候,我认为将合并 B 拉入合并 C 会很好。假设分支 B 的变更集 1、2、3 被拉入 C。
然后我决定恢复这个合并,使用“git revert -m”
我再次在两个分支中做了一些提交。然后我将分支 C 合并到 M 中。最后我将 B 合并到 M 中。
结果:变更集 1、2、3 未包含在 M 中。
这个程序有什么错误吗?这可能是一个错误吗?
解决方案
这是您的情况的图片:
M--o--o------------------------M1-M2 <----Branch M
\ \ / /
\ B--1-2-3--4----------------/--- <----Branch B
\ \ /
C---------MC--R(revert)--- <----Branch C
当你将 B 合并到 M 中时,git 只会在合并到 M 中包含提交 4 及以后。这是因为 1,2,3 已经在已经合并的 C 中,没有理由再次添加它们。由于 C 还原了这些,因此 M 中的结果将是 1,2,3 实际上不包含在 M 中。
请注意,在 git 中恢复合并提交并不简单。恢复合并实际上并不“撤消合并”。但它确实删除了该合并添加的内容。如果您需要恢复合并,您需要记住未来的合并可能需要手动干预来纠正这些未来的合并。