第6章:子模块与子树——大仓拆小仓的陷阱

第6章:子模块与子树——大仓拆小仓的陷阱 本章你将彻底掌握:git submodule的完整生命周期——添加、更新、克隆、删除。子模块 detached HEAD 状态的成因与解决方案。git subtree与git submodule的对比与选型决策树。配套资源:一个包含三个子模块的复杂依赖仓库 Docker 镜像、子模块批量更新脚本、subtree 合并推送脚本。真实踩坑:我曾修改子模块代码后忘记提交,主仓库记录了不存在的 commit hash,导致 CI/CD 全线飘红;还曾因为子模块嵌套过深,git clone --recursive花了 40 分钟,最后用git subtree彻底重构。6.1 一个让全组加班到凌晨的子模块事故2017 年我在某 AI 创业公司,项目依赖三个内部子模块:common/utils、common/config、common/ml-core。每个子模块都在独立的 Git 仓库中,通过git submodule嵌入主项目。某天我修改了common/utils里的一个日志函数,在子模块目录下直接改了代码,git commit -m "add log rotation",然后回到主项目执行