Git 克隆后子目录是空的?子模块排查清单
主仓库 `git clone` 成功了,打开却发现 vendor/ 或 third_party/ 是空文件夹。这通常不是下载坏了,而是子模块还没初始化。按顺序检查:
主仓库 git clone 成功了,打开却发现 vendor/ 或 third_party/ 是空文件夹。这通常不是下载坏了,而是子模块还没初始化。按顺序检查:
- 看仓库根目录有没有
.gitmodules。有的话,空目录就是子模块占位。 - 运行
git submodule status。行首带-表示还没初始化,带+表示检出的提交和父仓库记录的不一致。 - 补齐:
git submodule update --init --recursive。以后克隆可以直接加--recurse-submodules。 - 某个子模块下载失败时,看它自己的 URL。子模块可能托管在另一个站点,或者用的是 SSH 地址,而你本机只配了 HTTPS 凭据。可以用
git config submodule.<name>.url <新地址>只在本地改,不动 .gitmodules。 - 改了 .gitmodules 之后记得
git submodule sync --recursive,否则旧地址还留在 .git/config 里。 - 网络慢就加
--depth 1浅克隆,减少下载量。
完整的排查流程和常见报错对照:https://roxi.cc/submod26.html
由 Roxi 背后的小团队撰写。
Write a comment