添加指定分支的Git子模块报错:无法检出googletest v1.13.0
报错原因
git submodule add的-b参数用于指定子模块本地要跟踪的远程分支名称,但你指定的v1.13.0是googletest的发布标签(Tag),并非远程仓库中存在的分支。Git在远程仓库找不到名为v1.13.0的分支,无法创建对应本地分支并完成检出,因此抛出错误。
正确操作方法
分两种场景选择对应操作:
场景1:固定使用v1.13.0版本(锁定该Tag,不跟踪分支)
直接去掉-b参数,添加子模块后切换到指定Tag:
- 添加子模块:
git submodule add https://github.com/google/googletest.git external/googletest
- 进入子模块目录,切换到v1.13.0标签:
cd external/googletest git checkout v1.13.0 cd ../..
- 将子模块的版本变更提交到主仓库:
git add external/googletest git commit -m "Pin googletest to v1.13.0 tag"
场景2:跟踪googletest的正式维护分支
如果需要子模块跟踪googletest的官方长期维护分支,用-b参数指定正确的分支名即可,比如跟踪1.13.x系列的维护分支:
git submodule add -b release-1.13.x https://github.com/google/googletest.git external/googletest
后续可通过git submodule update --remote拉取该分支的最新代码。
内容的提问来源于stack exchange,提问作者Abhishek Dixit
相关产品推荐
相关产品推荐

