如何添加包含其他子模块的git子模块?

55

我正在处理一个项目,其中一个git仓库(A)包含另一个git仓库(B),而B又包含第三个git仓库(C)。在A中,我通过以下方式添加了B:

git submodule add https://github.com/blt04/sfDoctrine2Plugin.git plugins/sfDoctrine2Plugin

点击这里,你可以看到B引用了C:https://github.com/doctrine/doctrine2

在执行了git submodule add之后,我的plugins/sfDoctrine2Plugin/lib/vendor/doctrine文件夹(应该包含C)是空的。我尝试按照此StackOverflow答案所述使用git submodule update --recursive命令,但它仍然没有将文件导入到该路径。我不知道该怎么办。


1
您也可以使用“git clone --recursive <URL>”重新克隆存储库。 - Trevor Hickey
1个回答

89

您需要执行 git submodule update --init --recursive 命令。问题在于子模块 C 从一开始就没有被初始化。


3
哇,这下就解决了。我不知道为什么git一开始就没想到做这个。嗯,好的,谢谢! - Matt Huggins
2
Git 假设如果您没有初始化子模块,那是因为您不想要它。这对新手来说可能会有些困惑,但在子模块是可选的情况下,这非常有用。 - Lily Ballard
28
我一直觉得很惊讶的是,你不能只做这个操作:git submodule add --recursive <git路径>。 - Eric apRhys

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接