git submodule update --init --recursive 卡住了

37

当我输入 git submodule update --init --recursive 以递归克隆子模块时,它开始显示 cloning...,然后就什么也不做...一直卡着。

一个明显的解决方法是从 .gitmodule 文件中获取路径和仓库,导航到它们所指定的路径,然后手动用 git clone 克隆每个子模块。

另一个显而易见的解决方法是使用 Cntr-Z 中断操作,删除由 --init 参数生成的 .git 文件,然后再试一次。它似乎管用。

然而, 我看起来得到了一个破损的结果。

我的主要问题是: 如何使 git submodule update --init --recursive 正常工作,而不会卡住?

其他人遇到过这种情况吗?


2
你等了多久?可能是因为仓库正在尝试克隆非常大的文件或其他原因。请检查一下网络活动情况。 - mechalynx
问题在于,当我中断操作并从目标路径中删除.git文件后再次尝试,它只需要几秒钟就可以开始了。 - JohnG79
1
磁盘活动怎么样?如果有很多子模块或者硬盘有很多错误,那也可能会导致这种非常长的延迟,看起来似乎什么都没有发生。 - mechalynx
1个回答

93

默认情况下,更新子模块时不会显示进度。由于许多Git repo的下载速度相对较慢,这可能会导致看起来挂起的情况(我已经遇到过多次了)。

为了确保这不仅仅是大文件下载缓慢的原因,请使用--progress选项运行更新命令。

git submodule update --init --recursive --progress


12
v2.11.0版本起支持--progress - haolee
4
另外,如果需要很长时间,我建议添加“--depth 1”。 - Daniel Severo
谢谢,对我来说就是这样。 - Wes
1
--progress does not show any difference for me with git submodule update --remote --init --progress - Black

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接