我有以下目录结构:
- G1 /
- 的.git
- 一个
- B'/ LI>
- 的 C /
- 的的.git
- 的 d
- 的ë
如您所见,我在存储库“g1”中设置了存储库“c”。当我使用以下命令时:
git clone g1 g2
我只获得以下目录结构:
- G1 /
- 的.git
- 一个
- B'/ LI>
- 的 C /
目录“c”仍为空。有什么想法吗?
答案 0 :(得分:37)
Submodules(在Pro Git Book中讨论),帮助管理嵌套在主存储库中的存储库:
子模块允许外部存储库 嵌入专用的 源树的子目录, 总是指着一个特定的提交。
不要混淆他们 遥控器,主要用于 同一个项目的分支机构; 子模块适用于不同的 你想参与的项目 你的源代码树,而历史 这两个项目仍然存在 完全独立,你不能 修改子模块的内容 来自主项目。
子模块保持自己的 身份;子模块支持 存储子模块库 位置和提交ID,等等 克隆超级项目的开发人员 可以轻松克隆所有子模块 相同的修订。
答案 1 :(得分:2)
Git 2.5 +(2015年第2季度)在如何呈现子模块方面会更加准确
由于子模块已注册为 gitlink (a special entry in the index),因此可解释为什么在克隆父代回购邮件时“c
”为空。
另请参阅“git submodule
checks out the same commit”
您需要git submodule update --init
来填充“c
”。
现在更清楚地记录了这一点。
commit ec48a76见Stefan Beller (stefanbeller
)(2015年5月27日)
(Junio C Hamano -- gitster
--在commit 7df5c97中合并,2015年6月11日)
submodule
doc:重新排序介绍性段落最好启动手册页,其中包含对内容的描述 子模块实际上是,而不是说它们不是什么。
git submodule
man page现在(2015年6月)以:
子模块允许您将另一个Git存储库保存在子目录中 您的存储库 另一个存储库有自己的历史记录,不会干扰当前存储库的历史记录 这可用于具有外部依赖性,例如第三方库。
当克隆或拉出包含子模块的存储库时, 这些不会被默认签出; “
init
”和“update
” 子命令将维护子模块检出和 工作树中的适当修订。