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

如何将本地Git子模块推送到GitHub远程仓库并设置正确URL?

问题解决步骤

1. 修正.gitmodules中的子模块URL

你的子模块对应的远程仓库是libBasexTest和libBasexCpp,因此.gitmodules里的URL必须指向这两个独立仓库,相对路径在本地可用但GitHub解析易出问题。修正后的内容如下:

[submodule "libBasexTest"]
    path = libBasexTest
    url = git@github.com:BenEngbers/libBasexTest.git
[submodule "libBasexCpp"]
    path = libBasexCpp
    url = git@github.com:BenEngbers/libBasexCpp.git

若习惯HTTPS认证,可替换为:

[submodule "libBasexTest"]
    path = libBasexTest
    url = https://github.com/BenEngbers/libBasexTest.git
[submodule "libBasexCpp"]
    path = libBasexCpp
    url = https://github.com/BenEngbers/libBasexCpp.git

2. 同步子模块配置到本地

执行命令将.gitmodules的配置同步到每个子模块的本地Git配置:

git submodule sync

3. 验证并修正子模块的远程仓库

进入每个子模块目录,检查远程仓库是否正确:

cd libBasexTest
git remote -v

若输出不是对应子模块的远程地址,手动设置:

git remote set-url origin git@github.com:BenEngbers/libBasexTest.git

重复上述操作处理libBasexCpp目录。

4. 推送子模块内容到对应远程仓库

确保子模块的本地提交已推送到各自的远程仓库:

# 处理libBasexTest
cd libBasexTest
git push origin main  # 分支为master则替换为master
cd ..

# 处理libBasexCpp
cd libBasexCpp
git push origin main
cd ..

5. 推送主仓库更新

提交.gitmodules的修改并推送到主仓库:

git add .gitmodules
git commit -m "Fix submodule remote URLs and sync commits"
git push origin main

问题根源说明

最初添加子模块时错误使用了主仓库的URL,导致子模块指向主仓库本身;后续修改为相对路径后未同步子模块本地配置,且git push --recurse-submodules=on-demand因子模块远程配置错误,无法将子模块提交推送到正确远程仓库,最终GitHub无法找到子模块对应commit,出现错误提示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 19:22:32