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

如何配置Git在执行git pull时自动将子模块更新至提交状态?

解决Git拉取主仓库时自动同步子模块的问题

这确实是Git子模块使用中常见的痛点——默认情况下git pull只会更新主仓库里的子模块引用记录,不会主动去拉取子模块的实际代码变更,导致本地子模块版本和主仓库指向的版本脱节,git status就会显示子模块为已修改状态。虽然手动执行git submodule update能临时解决,但我们可以通过配置让Git自动完成这个同步操作:

1. 临时拉取时同步子模块

如果只是想单次拉取时同步子模块,直接在pull命令里加上参数即可:

git pull --recurse-submodules

要是已经拉取了主仓库但还没更新子模块,也可以单独执行:

git submodule update --init --recursive

2. 配置Git自动同步子模块(一劳永逸)

全局配置(所有仓库生效)

执行下面的命令,以后任何仓库执行git pull时,都会自动递归更新子模块:

git config --global submodule.recurse true

单个仓库配置(仅当前仓库生效)

如果只想给特定仓库开启这个功能,进入仓库目录后执行:

git config submodule.recurse true

额外配置:同步子模块的远程分支更新

如果还希望Git在执行fetch时也同步子模块的远程分支(确保子模块的本地分支能获取到最新的远程变更),可以再加个配置:

# 全局生效
git config --global fetch.recurseSubmodules true
# 单个仓库生效
git config fetch.recurseSubmodules true

配置完成后,下次再执行git pull,Git就会自动同步主仓库和所有子模块到对应提交版本,再也不用手动处理子模块的状态不一致问题了。

内容的提问来源于stack exchange,提问作者autarch princeps

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 04:17:16