Git中子项目和子模块之间的区别?

在Git中,是否有一个“子模块”(由git子模块命令创build和pipe理)和一个“子项目”(字面上只是一个Git仓库,放在另一个Git仓库中)有区别,如果是这样,它是什么?

我所能find的所有文档都很模糊(在某些情况下是相互矛盾的)。 我的怀疑是没有区别,但我想我应该确认,并留下一个Git新手find一个问题。

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

  • 子模块提供从超级项目到子项目的半固定引用,并被集成到git中。 当子项目:
    • 是由其他人开发的,不在超级项目的pipe理控制之下,并遵循不同的发布周期。
    • 包含超级项目之间共享的代码(特别是当意图是将错误修正和新function传播回其他超级项目时)。
    • 分离巨大的和/或许多会伤害日常git命令性能的文件。
  • 子树导致子项目存储库被导入到超级项目的存储库中,成为具有完整历史logging的存储库的本地部分,通常在超级项目的特定子目录中。
  • 包装器 ,为具有相关子项目的超级项目提供多存储库pipe理function。

参考文件