首页/开发/Git 与协作速查/git subtree add 引入子树
进阶与大仓实践69 条

git subtree add 引入子树

把外部仓库内容合并到当前仓库的指定前缀目录;带 --squash 可只保留一次压缩提交,减少历史噪声。

Git 与协作速查开发更新于 2026-10-12
语法git subtree add --prefix=<目录> <远程> <分支> [--squash]
产物目录内容 + 一次合并(或 squash 提交)
前提远程已 fetch 到本地引用

常用示例

常用示例
git remote add vendor https://example.com/libs/common.git
git fetch vendor
git subtree add --prefix=libs/common vendor main --squash
子树是普通目录内容,克隆方无需额外命令;但更新与回推必须记住 prefix,命令写错会重复合并。

易错点

  • 不加 --squash 会带入对方完整历史,仓库体积与合并记录都会增长
  • prefix 目录必须不存在或为空,路径写错会产生两份代码

数据来源与参考

  • Git 官方文档:git-subtree
  • Pro Git 2nd Edition · 7.11 子模块(子树对比)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌