Difference between subprojects and submodules in Git?

在 Git 中,“子模块”(由 Git 子模块命令创建和管理)和“子项目”(字面意思就是放在另一个 Git 存储库中的一个 Git 存储库)之间有区别吗? 如果有,是什么?

我能找到的关于这个问题的所有文档都相当模糊(在某些情况下,相互矛盾)。我的怀疑是没有区别,但我认为我应该证实这一点,并留下一个问题给 Git 新手去发现。

28128 次浏览

子项目是三种嵌套类型之一的通用术语:

  • 子模块 提供从超级项目到子项目的半固定引用,并集成到 git 中。当子项目:
    • 是由其他人开发的,不在超级项目的管理控制之下,并遵循不同的发布周期。
    • 包含超级项目之间共享的代码(特别是当目的是将错误修复和新特性传播回其他超级项目时)。
    • separates huge and/or many files that would hurt performance of everyday git commands.
  • 子树 导致将子项目存储库导入到超级项目的存储库中,使其成为存储库中具有完整历史的本机部分,通常位于超级项目的特定子目录中。
  • Wrappers ,它为具有相关子项目的超级项目提供多存储库管理功能。

参考文件