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

Git子模块本地修改工作流:如何用本地仓库更新子模块免复制

解决本地Git子模块同步问题的方案

完全可以省去复制粘贴的步骤,通过Git自带的子模块命令直接从本地common仓库同步更新到controller和modules的子模块中,具体操作步骤如下:

1. 确保子模块关联本地common仓库

如果你的controller和modules里的common子模块之前关联的是远程仓库,先把它们的远程地址改成本地common仓库的路径:

  • 进入controller项目的common子模块目录:
    cd controller/common
    git remote set-url origin /绝对路径/到你的本地common仓库
    
  • 相同操作应用到modules项目的common子模块:
    cd modules/common
    git remote set-url origin /绝对路径/到你的本地common仓库
    

如果是首次添加子模块,直接用本地路径添加即可:git submodule add /本地common仓库路径 common

2. 本地common仓库修改并提交

在本地common仓库完成代码修改后,正常提交(测试阶段无需推送到远程):

cd /本地common仓库路径
git add .
git commit -m "修改说明:xxx"

3. 同步更新controller和modules的子模块

方式一:单个项目更新

进入controller根目录,执行以下命令拉取本地common的最新修改:

cd controller
# 更新子模块到本地仓库的最新提交
git submodule update --remote --merge common
# 提交父仓库中子模块的指针变更
git add common
git commit -m "同步common子模块到最新修改"

modules项目执行相同步骤即可。

方式二:批量更新所有子模块

如果想一次性更新controller和modules里的common子模块,可以在父目录(假设两个项目都在同一个文件夹下)执行:

# 遍历controller和modules,更新子模块
for repo in controller modules; do
  cd $repo
  git submodule foreach git pull origin main
  git add common
  git commit -m "同步common子模块"
  cd ..
done

注意:把main换成你实际使用的分支名

额外测试技巧

如果只是临时测试修改,不想提交子模块的指针变更,可以直接进入子模块目录执行git pull,此时父仓库会显示子模块处于"dirty"状态,测试完成后如果要丢弃修改,直接在子模块执行git reset --hard即可。

内容的提问来源于stack exchange,提问作者John Doe

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 21:22:02