由于链接到未发生的修订,Git子模块失败

时间:2015-06-15 20:36:03

标签: git github git-submodules

我对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 AHere for B included)时,我发现了一些奇怪的事情:存储库正在将其子模块链接到一个修订密钥(32a0a80f17ee3628cb99b886c68e566981d7deff)。 t存在于B存储库上的任何提交中,并且当单击Github时会导致404。

所以从这里看,它看起来像是一个Github的bug ...但我更喜欢你的解决方案,而不是指责这个平台。

1 个答案:

答案 0 :(得分:1)

这意味着A录制了一个 gitlink special entry in the index),引用了submodule B的SHA1,它从未被推送到GitHub。

A在本地克隆中使用B时,B位于32a0a80A被推了,但B没有。因此问题。

通常,git submodule update --init会使用来自提交B的文件填充32a0a80,但由于未提交该提交,该命令也会失败。