因为有用 git 管理 子项目 的需要,我在网上找到了 submodulesubtree 这两种方法。奇怪的是,有好几篇文章提到用 subtree 替代 submodule

比如这两篇:

这两个链接分别都出现在 Google 搜索中文和搜索英文时的首页上。因此,我最开始使用的是 subtree,以为 subtree 就是目前的主流方案,并且是 submodule 的替代方案。直到前些日子我改用了 submodule 才发现,submodule 才是真正我想用的。

这两者都可以解决类似的管理子项目的问题,但两者的管理方式有比较大的区别,并且两者都各自有各自的优缺点。比如说,这篇文章 Git submodule的坑 | 唐巧的博客 谈到了 submodule 遇到的坑,而这篇文章 git submoudle vs git subtree | EFE Tech 则谈到了使用 subtree 的过程中遇到的坑。因此个人觉得很难讲谁替代谁、谁比谁更好。

有人对 submodule 和 subtree 的区别做的一个总结还是挺形象的: submodule is link; subtree is copy

当然了,由于我个人的经验有限,我说的也许都是错的,但是别人说的也不一定都是对的啊。工具嘛,适合自己,又能方便的解决问题,就可以了。