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

Git子模块故障:已设相对路径却无法获取本地最新变更

解决Git子模块URL修改及本地同步问题

1. 修正子模块URL的正确命令

你之前使用的git submodule set submodule.mysub.url ../mysub仅修改了本地仓库的config文件,不会同步更新仓库根目录的.gitmodules共享配置文件,这是核心问题。正确的修改命令应为:

git submodule set-url mysub ../mysub

执行后,.gitmodules文件内的URL会自动更新为相对路径../mysub,同时本地config也会保持一致。

2. 同步配置并验证

完成URL修改后,执行以下操作确保配置生效:

  • 同步子模块配置到本地:
    git submodule sync --recursive
    
  • 进入子模块目录,确认远程地址已更新:
    cd mysub
    git remote -v
    
    输出结果中origin的地址应为../mysub。

3. 拉取本地mysub的未推送变更

现在可以直接从本地仓库拉取未推送的提交:

cd mysub
git pull origin <你的分支名称>

若需合并特定分支的本地变更,也可直接执行:

git checkout <目标分支>
git merge ../mysub/<目标分支>

4. 在主仓库提交变更

回到main仓库,提交子模块的URL修改及更新后的提交记录:

cd ..
git add .gitmodules mysub
git commit -m "Update mysub submodule URL to local relative path and sync latest changes"

关键说明

  • .gitmodules是仓库共享配置文件,必须保证其被正确修改,否则其他协作克隆仓库时仍会使用旧的远程URL。
  • 之前你执行git submodule sync后配置被覆盖,正是因为.gitmodules里的旧地址未更新,sync操作会将共享配置同步到子模块本地config,覆盖你单独修改的内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 00:00:58