Git 子模块因 link 不存在的修订而失败
Git submodule fail because of link to unexisting revision
我遇到了 git 子模块拉取问题:我有两个存储库,我们称它们为存储库 A 和存储库 B。
回购 B 是回购 A 的子模块,因此我使用此命令行将回购 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/modules/B/
这是一个文件夹的路径,其中包含一些 git 数据,但仍然不是我的 B 存储库文件。
我也试过了:
git submodule update --init --recursive
没有任何变化。
当我查看我的 Github 存储库 (Here for A and Here for B included) 时,我注意到了一些奇怪的事情:一个存储库正在将其子模块链接到一个修订密钥 (32a0a80f17ee3628cb99b886c68e566981d7deff),该密钥在任何版本上都不存在在 B 存储库上提交,并在单击 Github.
时导致 404
所以从这里看,它看起来像一个 Github 错误...但我更喜欢你的解决方案而不是指责这个平台。
这意味着 A 记录了一个 gitlink (special entry in the index) referencing a SHA1 of the submodule B
从未被推送到 GitHub.
当 A
在本地克隆中使用 B
时,B
位于 32a0a80
。 A
被推送,但 B
没有。因此这个问题。
通常,git submodule update --init
会使用提交 32a0a80
中的文件填充 B
,但由于未推送该提交,该命令也会失败。
我遇到了 git 子模块拉取问题:我有两个存储库,我们称它们为存储库 A 和存储库 B。
回购 B 是回购 A 的子模块,因此我使用此命令行将回购 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/modules/B/
这是一个文件夹的路径,其中包含一些 git 数据,但仍然不是我的 B 存储库文件。
我也试过了:
git submodule update --init --recursive
没有任何变化。
当我查看我的 Github 存储库 (Here for A and Here for B included) 时,我注意到了一些奇怪的事情:一个存储库正在将其子模块链接到一个修订密钥 (32a0a80f17ee3628cb99b886c68e566981d7deff),该密钥在任何版本上都不存在在 B 存储库上提交,并在单击 Github.
时导致 404所以从这里看,它看起来像一个 Github 错误...但我更喜欢你的解决方案而不是指责这个平台。
这意味着 A 记录了一个 gitlink (special entry in the index) referencing a SHA1 of the submodule B
从未被推送到 GitHub.
当 A
在本地克隆中使用 B
时,B
位于 32a0a80
。 A
被推送,但 B
没有。因此这个问题。
通常,git submodule update --init
会使用提交 32a0a80
中的文件填充 B
,但由于未推送该提交,该命令也会失败。