首页 > 解决方案 > 将 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 中。

这个程序有什么错误吗?这可能是一个错误吗?

标签: gitmerge

解决方案


这是您的情况的图片:

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 中恢复合并提交并不简单。恢复合并实际上并不“撤消合并”。但它确实删除了该合并添加的内容。如果您需要恢复合并,您需要记住未来的合并可能需要手动干预来纠正这些未来的合并。


推荐阅读