git --recursive 不克隆子模块

git --recursive doesn't clone submodule

我了解到要使用主存储库下载子模块,我们可以在克隆主存储库时使用 --recursive 选项。

我也是这样做的git clone --recursive git@github.com:passion/academy.git

我发现它只是创建了一个空的子模块目录,并没有下载它的代码。

我们是否需要像 git submodule update --init --recursive 那样做额外的事情?如果是,那么克隆主存储库时 --recursive 标志的用途是什么?

如果您使用的是足够新的git,并且它仍然不克隆子模块,这意味着那些空文件夹不是子模块而是 .

嵌套存储库在其父存储库中记录为 gitlink,但不会有任何关联的 .gitmodules 文件。

health-check seem to be a nested git but not sure when cloning give me No submodule mapping found in .gitmodules for path for health-check .. is it necessary for nested git repos to have entry in .gitmodules ?

如果您希望嵌套的 git 存储库作为子模块被识别和管理,是的。

所示,health-check.gitmodules 中缺少路径条目可能会阻止 hellospawn(这似乎是一个 legit 子模块)被签出。

我遇到了类似的问题。需要检查的几件事:

  1. 检查您的 .git模块 文件:
% cat .gitmodules
[submodule "src/mysubmodule"]
    path = src/mysubmodule
    url = myurl/mysubmodule.git
  1. 检查您的 .git/config 文件并确保列出的子模块 url 与 .gitmodules:
% cat .git/config
...
[submodule "src/mysubmodule"]
    url = myurl/mysubmodule.git
    active = true
  1. 最后,检查 url 并确保这是正确的 url(应该与您在该子模块的“git 克隆”中键入的内容相同)。