模块依赖之王:git subtree 管理嵌套仓库
用 git subtree 替代 submodule,将外部仓库合并为自己的子目录,解决子模块协作痛点。 · 难度:入门 · +10XP
模块依赖之王:git subtree 管理嵌套仓库
git subtree 允许你将一个外部仓库作为子目录集成到当前仓库中,并且所有历史都被完整保留。与 submodule 不同,子仓库的代码直接存在于主仓库中,协作时不需要额外初始化步骤。你可以双向同步:从上游拉取更新,或者将子目录的改动推回上游。缺点是主仓库会变得更大,但避免了子模块的“空目录”问题。本节演示如何添加、更新和分裂 subtree。
# 将远程仓库的 master 分支添加到 libs/utils 目录
git subtree add --prefix=libs/utils https://github.com/user/utils.git master
# 从上游拉取最新代码
git subtree pull --prefix=libs/utils https://github.com/user/utils.git master
# 将子目录的改动推回上游
git subtree push --prefix=libs/utils https://github.com/user/utils.git master
# 将子目录拆分为独立仓库
git subtree split --prefix=libs/utils -b utils-branch