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

Git子模块迁移URL后工作分支拉取旧地址问题及流程咨询

问题原因

执行子模块拉取时读到旧URL,核心原因是Git子模块的URL配置存在两层存储:

  • 提交在仓库里的.gitmodules文件:随分支代码一起版本管理,不同分支可以存储不同配置
  • 本地仓库.git/config文件:本地缓存的子模块配置,切换分支时不会自动同步.gitmodules的最新改动
    切到工作分支后直接执行git submodule update,Git读取的是本地缓存的master分支旧URL,自然会拉取错误。
不需要合并到master的正确拉取方式

在原有操作流程里加一步同步子模块配置即可,完整命令如下:

git clone myRepo.git
git checkout myWorkingBranch
# 同步当前分支.gitmodules里的最新配置到本地缓存
git submodule sync --recursive
git submodule update --init --recursive

如果你之前已经跑过错误的update拉到了旧地址的子模块,先执行下面的命令清理错误状态,再走上面的流程即可:

git submodule deinit --all -f

不需要手动进入每个子模块目录切分支,也不需要提前把工作分支合并到master。

子模块URL迁移的规范流程

只修改.gitmodules就提交的流程不完整,标准迁移流程如下:

  • 修改根目录下.gitmodules文件中对应子模块的URL为新地址
  • 执行git submodule sync --recursive,将新URL同步到本地配置缓存
  • 进入子模块目录,确认拉取到的内容符合预期,切到你需要绑定的对应提交/分支
  • 回到主仓库根目录,执行git add .gitmodules <子模块目录路径>,将.gitmodules的URL变更、子模块指针的变更同时加入暂存区
  • 提交改动,推送到对应远程分支即可

注意:不要直接修改本地.git/config里的子模块地址,这个文件属于本地配置,不会被提交到远程仓库,仅修改该文件不会对其他协作者生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 03:51:20