首页/开发/Git 与协作速查/git submodule foreach 批量操作
进阶与大仓实践69 条

git submodule foreach 批量操作

对每个子模块执行同一条命令,适合批量拉取、查看状态或统一切换分支;提供 $name、$path、$sha1 等变量。

Git 与协作速查开发更新于 2026-10-12
语法git submodule foreach '<命令>'
变量$name 子模块名、$path 相对路径、$sha1 记录的提交
递归--recursive 逐层执行

常用示例

常用示例
git submodule foreach 'git status --short'
git submodule foreach --recursive 'git fetch --all --prune'
git submodule foreach 'echo $name: $(git rev-parse HEAD)'
命令会在每个子模块目录执行,写错的分支操作可能影响全部子模块;先加 --dry-run 类似的自检(如先跑 status)再执行写操作。

易错点

  • 命令字符串里的 $name 等变量由 git 展开,脚本嵌套时要正确转义避免被外层 shell 抢先展开
  • 批量切换分支可能让指针与父仓库记录不一致,执行后统一 submodule status 复核

数据来源与参考

  • Git 官方文档:git-submodule(foreach)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌