首页/开发/Git 与协作速查/git merge -s subtree 子目录对齐合并
合并变基与冲突71 条

git merge -s subtree 子目录对齐合并

把对方仓库内容对齐到当前仓库的某个子目录进行合并,用于没有子树元数据的「库中库」场景;新项目更推荐 git subtree 或子模块。

Git 与协作速查开发更新于 2026-10-12
用途把外部仓库并入指定子目录
语法git merge -s subtree -X subtree=<子目录> <分支>
替代方案git subtree add/pull(见进阶分片)

常用示例

常用示例
git remote add vendor https://example.com/vendor/lib.git
git fetch vendor
git merge -s subtree -X subtree=vendor/lib vendor/main
-s subtree 依赖启发式判断目录偏移,对方目录结构大改时可能错位;用前先备份分支并逐次核对 diff。

易错点

  • 与 git subtree 命令的元数据不兼容,混用可能造成重复合并或丢改动
  • 合并方向搞反会把主干内容写进对方目录,先在小仓库演练再上生产仓库

数据来源与参考

  • Git 官方文档:git-merge(subtree 策略)
  • Git 官方文档:git-subtree
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌