首页/开发/Git 与协作速查/CI 中拉取子模块
进阶与大仓实践69 条

CI 中拉取子模块

流水线默认浅克隆不含子模块:需要 --recurse-submodules 并按需加深历史;私有子模块要在同一凭据体系下可访问,否则构建会卡在拉取。

Git 与协作速查开发更新于 2026-10-12
克隆git clone --recurse-submodules --depth 1 <url>
已克隆仓库git submodule update --init --recursive --depth 1
权限子模块与父仓库需同一套只读凭据(部署密钥/令牌)

CI 常用写法

CI 常用写法
git clone --recurse-submodules --shallow-submodules --depth 1 https://example.com/app.git
git -C app submodule status --recursive
子模块地址为 SSH 时,CI 需准备对应私钥(或改用 HTTPS + 令牌),先做一次连通性验证。

易错点

  • CI 只克隆父仓库时子模块目录为空,构建报错信息常指向缺文件而非子模块本身
  • 子模块指向的提交已被上游删除(force push 过)时拉取失败,需要先修复指针

数据来源与参考

  • Git 官方文档:git-submodule(--depth/--shallow-submodules)
  • Git 官方文档:git-clone(--recurse-submodules)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌