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

如何更新Git镜像中的子模块URL

嘿,我来帮你搞定这个问题~ 因为你用git clone --mirror得到的是裸仓库(bare repository),没法直接像普通仓库那样编辑文件操作,得按下面的步骤来更新子模块URL:

步骤1:创建临时工作仓库来修改配置

首先进入你的镜像仓库所在目录,克隆一个本地临时普通仓库(这样才能编辑子模块配置):

git clone --local myrepo.git temp-working-repo
cd temp-working-repo

步骤2:更新子模块URL

有两种方式修改子模块的URL,选一种就行:

  • 方式一:用Git命令直接设置(推荐)
    替换<子模块路径>和<新URL>为你实际的内容,比如子模块在utils/submod,新URL是https://new-domain.com/submod.git:
    git submodule set-url <子模块路径> <新的URL>
    
  • 方式二:手动编辑.gitmodules文件
    直接打开.gitmodules,找到对应子模块的url字段,替换成新地址后保存文件。

步骤3:提交并推送修改到镜像仓库

修改完后,提交变更并推回你的镜像仓库:

git add .gitmodules
git commit -m "Update submodule URLs to new addresses"
git push origin main  # 如果你的主分支是master就改成master

步骤4:(可选)更新子模块的镜像(如果包含子模块镜像)

如果你当初克隆镜像时用了--recurse-submodules,镜像仓库里会包含子模块的镜像副本。这时候需要进入对应子模块的镜像目录,更新它的远程URL:

# 回到镜像仓库目录
cd ../myrepo.git/modules/<子模块路径>
# 设置新的子模块远程URL
git remote set-url origin <新的子模块镜像URL>
# 拉取最新内容(可选,确保镜像同步)
git fetch --prune

步骤5:清理临时仓库

最后删掉临时的工作仓库就行:

cd ../../
rm -rf temp-working-repo

额外提醒

之后别人从这个镜像仓库克隆项目时,初始化子模块会自动用新URL。如果是已经克隆过的本地仓库,需要运行下面的命令同步子模块URL并更新:

git submodule sync --recursive
git submodule update --init --recursive

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 21:33:11