远程Git子模块分支改名为main本地为master拉取报错如何解决
解决方案
不需要删除子模块重新添加,直接修改本地和仓库的子模块分支跟踪配置即可,步骤如下:
- 修改主仓库根目录下的
.gitmodules文件,找到对应子模块的配置段,将原有的branch = master配置修改为branch = main,如果该段没有显式配置branch字段,直接新增一行即可,参考配置:
[submodule "path/to/your/submodule"] path = path/to/your/submodule url = https://your-submodule-repo-address.git branch = main
- 在主仓库根目录执行配置同步命令,将
.gitmodules的变更同步到本地Git配置:
git submodule sync --recursive
- 进入报错的子模块目录,修正子模块自身的远程跟踪配置:
- 更新远程分支抓取规则,替换旧的master分支抓取配置为main:
git config remote.origin.fetch "+refs/heads/main:refs/remotes/origin/main" - 如果子模块本地当前分支名还是
master,直接重命名为main:git branch -m master main - 将本地main分支关联到远程的origin/main分支:
git branch -u origin/main main
- 更新远程分支抓取规则,替换旧的master分支抓取配置为main:
- 回到主仓库根目录,执行子模块更新命令验证修复:
git submodule update --init --recursive --remote
验证拉取正常后,记得把
.gitmodules的修改提交到主仓库。其他协作者拉取到这次提交后,只需要执行git submodule sync --recursive就能自动同步配置,不会复现该报错。
内容的提问来源于stack exchange,提问作者user3156459
相关产品推荐
相关产品推荐

