You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows系统下如何自动上传Git子模块变更到主仓库?

Windows环境下自动暂存Git子模块变更的解决方案

默认执行git add *仅能暂存主仓库内变更、无法处理子模块内修改,是因为*是Shell层面的当前目录通配符,且Git默认不会递归进入子模块执行暂存操作,通过以下两种方案即可实现自动化处理,无需手动进入子模块目录操作:

原生Git命令方案(无需写脚本)

直接使用Git自带的递归处理参数即可完成全量暂存:

  • 一键暂存主仓库+所有层级嵌套子模块的全部变更,直接执行:
git add --all --recurse-submodules
  • 如果需要分步核对操作,也可以先遍历所有子模块暂存内部变更,再暂存主仓库的变更(含子模块指针更新):
git submodule foreach --recursive git add --all
git add --all

执行后通过git status即可确认所有子模块的变更都已被正确暂存。

批处理脚本方案(一键执行)

如果需要封装成Windows下双击即可运行的工具,在主仓库根目录新建名为git-add-all.bat的文件,写入以下内容:

@echo off
:: 递归暂存所有子模块内部变更
git submodule foreach --recursive "git add --all"
:: 暂存主仓库所有变更(含子模块指针变动)
git add --all
:: 执行完成后输出当前仓库状态方便核对
git status
echo.
echo 所有变更(含子模块内容)已完成暂存
pause

后续需要暂存所有变更时直接双击运行该脚本即可。

配套提交、推送命令

暂存完成后如果需要直接提交、推送,也可以用递归参数避免重复手动操作:

  • 递归提交所有变更:子模块内会先生成对应提交,再更新主仓库的子模块指针提交
git commit -m "你的提交说明" --recurse-submodules
  • 安全推送:自动检查子模块未推送的提交,先推子模块再推主仓库,避免其他协作者拉取后找不到子模块对应提交报错
git push --recurse-submodules=on-demand

内容的提问来源于stack exchange,提问作者silver takana

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 14:27:18