Git 克隆后子目录是空的?子模块排查清单

主仓库 `git clone` 成功了,打开却发现 vendor/ 或 third_party/ 是空文件夹。这通常不是下载坏了,而是子模块还没初始化。按顺序检查:

主仓库 git clone 成功了,打开却发现 vendor/ 或 third_party/ 是空文件夹。这通常不是下载坏了,而是子模块还没初始化。按顺序检查:

  1. 看仓库根目录有没有 .gitmodules。有的话,空目录就是子模块占位。
  2. 运行 git submodule status。行首带 - 表示还没初始化,带 + 表示检出的提交和父仓库记录的不一致。
  3. 补齐:git submodule update --init --recursive。以后克隆可以直接加 --recurse-submodules。
  4. 某个子模块下载失败时,看它自己的 URL。子模块可能托管在另一个站点,或者用的是 SSH 地址,而你本机只配了 HTTPS 凭据。可以用 git config submodule.<name>.url <新地址> 只在本地改,不动 .gitmodules。
  5. 改了 .gitmodules 之后记得 git submodule sync --recursive,否则旧地址还留在 .git/config 里。
  6. 网络慢就加 --depth 1 浅克隆,减少下载量。

完整的排查流程和常见报错对照:https://roxi.cc/submod26.html

由 Roxi 背后的小团队撰写。


Write a comment