嵌套的Git子模块没有使用--recursive标记正确克隆

时间:2016-12-09 01:03:51

标签: git git-submodules

我正在设置github项目的内部镜像。该项目中有子模块,在原始子模块中也有子模块。

我已经单独镜像了所有存储库,并更新了所有存储库中的.gitmodules文件以指向内部镜像位置。所有存储库都使用--recursive单独克隆,没有任何问题。出于某种原因,当我尝试克隆任何具有嵌套子模块的存储库时,可以从.gitmodules中正确读取第一组子模块并进行克隆,但是该子模块中的子模块将全部尝试从其原始github URL进行克隆。我无法弄清楚这些URL的来源,因为嵌套的子模块都已更新了.gitmodules文件。

有没有人遇到过这个?有任何想法吗?

2 个答案:

答案 0 :(得分:1)

当您使用git submodule update --init --recursive进行初始设置时,您将直接从记录的提交中获取.gitmodules值。我在想你更新.gitmodules文件的时候没有深度优先,所以当第一级子模块中记录的.gitmodules被更新和添加时,它自己子模块尚未更新和添加,因此记录的提交仍然具有原始.gitmodules文件。

答案 1 :(得分:0)

这是执行此操作的最佳方式:

git submodule update --init --recursive

这会解决您的问题吗?