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

时间:2011-08-19 16:17:05

标签: git

在Git中,“子模块”(由git子模块命令创建和管理)和“子项目”(实际上只是一个放在另一个Git存储库中的Git存储库)之间存在差异,如果是这样,它是什么?

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

1 个答案:

答案 0 :(得分:78)

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

  • 子模块提供从超级项目到子项目的半固定引用,并集成到git中。最好在子项目中使用:
    • 由其他人开发,不受超级项目的管理控制,并遵循不同的发布周期。
    • 包含超级项目之间共享的代码(特别是当意图将错误修正和新功能传播回其他超级项目时)。
    • 分隔大量和/或许多会损害日常git命令性能的文件。
  • 子树导致子项目存储库导入到超级项目的存储库中,成为具有完整历史记录的存储库的本机部分,通常位于超级项目的特定子目录中。
  • Wrappers ,为具有关联子项目的超级项目提供多存储库管理功能。

Reference documentation