首页/开发/Git 与协作速查/git subtree split 拆分目录历史
进阶与大仓实践69 条

git subtree split 拆分目录历史

把前缀目录的历史提取成一个独立分支(保留相关提交),可用于把目录拆成新仓库或作为回推中间产物。

Git 与协作速查开发更新于 2026-10-12
语法git subtree split --prefix=<目录> [-b <分支>]
结果生成只含该目录历史的提交链
用途目录独立成仓、检查目录历史

常用示例

常用示例
git subtree split --prefix=libs/common -b split/common
git log --oneline split/common | head
git push origin split/common:refs/heads/common-export
拆分结果可直接作为新仓库的初始历史;对大型目录首次执行可能较慢。

易错点

  • split 结果与原历史哈希不同,旧引用需要在文档中明确替换关系
  • 目录内混入非该模块的提交时,拆分结果会带上无关历史,事前先梳理

数据来源与参考

  • Git 官方文档:git-subtree(split)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌