You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

含子模块冲突的多Git提交合并差异原因及实现方案咨询

Git子模块多提交合并差异原因及解决方案

差异原因

  • 合并2个提交时,Git默认使用递归合并策略,该策略允许在遇到子模块冲突时进入冲突状态,保留现场让你手动修复冲突后完成合并。
  • 合并3个及以上提交时,Git会自动切换为章鱼合并策略,这个策略仅适用于无冲突的多分支合并场景,一旦遇到子模块这类无法自动调和的冲突,会直接终止合并流程,不会留下可修复的冲突状态——报错中的"Should not be doing an octopus"就是这个逻辑的体现。

多提交合并的实现方法

方法1:分步合并(兼容所有Git版本)

这是最稳妥的方式,通过多次双提交合并完成多分支整合:

  1. 切换到基础提交P:
    git checkout P
    
  2. 先合并A和B,修复子模块冲突后提交:
    git merge A B
    
    修复冲突后执行git commit完成合并,得到中间合并提交M。
  3. 再将中间提交M与C合并,如有冲突继续修复后提交:
    git merge C
    
    最终就能得到包含A、B、C所有变更的合并提交。

方法2:强制使用递归合并策略(Git 2.34+可用)

Git 2.34版本开始支持对多提交合并强制使用递归策略,这样遇到子模块冲突时会进入可修复的冲突状态:

git checkout P
git merge --strategy=recursive A B C

修复子模块冲突后,执行git commit即可完成合并。


内容的提问来源于stack exchange,提问作者Luc Touraille

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 17:43:18