我对git子模块拉有问题:我有两个reporistories,让我们称它们为repo A和repo B.
Repo B是repo A的子模块,所以我用这个命令行添加了repo B作为A的子模块:
git submodule add git@github.com:Aracthor/B.git libvvgl
但是当我尝试像这样克隆我的项目时:
git clone git@github.com:Aracthor/A.git
我的B项目文件夹是空的,当我尝试这个时(来自this answer的解决方案):
git clone --recursive git@github.com:Aracthor/A.git
我的B文件夹只包含一个空文件.git
,其中只包含一行:
../。GIT中/模块/ B /
这是包含一些git数据的文件夹的路径,但仍然不是我的B存储库文件。
我也尝试了这个:
git submodule update --init --recursive
没有任何改变。
当我查看我的Github存储库(Here for A和Here for B included)时,我发现了一些奇怪的事情:存储库正在将其子模块链接到一个修订密钥(32a0a80f17ee3628cb99b886c68e566981d7deff)。 t存在于B存储库上的任何提交中,并且当单击Github时会导致404。
所以从这里看,它看起来像是一个Github的bug ...但我更喜欢你的解决方案,而不是指责这个平台。
答案 0 :(得分:1)
这意味着A录制了一个 gitlink (special entry in the index),引用了submodule B
的SHA1,它从未被推送到GitHub。
当A
在本地克隆中使用B
时,B
位于32a0a80
。 A
被推了,但B
没有。因此问题。
通常,git submodule update --init
会使用来自提交B
的文件填充32a0a80
,但由于未提交该提交,该命令也会失败。