如何修复Git子模块错误:fatal: Needed a single revision
解决Git子模块"Unable to find current origin/master revision"问题
检查子模块配置文件
先确认.gitmodules中coq_serapy的远程地址和跟踪分支是否正确,很多仓库已将默认分支从master改为main,这是常见诱因:cat .gitmodules | grep -A5 coq_serapy修正子模块分支配置
如果发现配置里的分支(比如master)和远程仓库实际默认分支不符,更新配置并同步:# 假设远程默认分支是main,替换为实际分支名 git config -f .gitmodules submodule.coq_serapy.branch main git submodule sync重置子模块本地状态
清理本地子模块的缓存配置,重新初始化:git submodule deinit -f coq_serapy rm -rf .git/modules/coq_serapy git submodule update --init --remote coq_serapy手动克隆子模块修复
若上述方法无效,直接手动克隆子模块到指定路径,再让主仓库识别:rm -rf coq_serapy # 替换为coq_serapy的实际远程仓库地址 git clone https://github.com/xxx/coq_serapy.git coq_serapy cd coq_serapy # 切换到主仓库需要的分支或提交哈希 git checkout main cd .. git add coq_serapy git commit -m "Fix coq_serapy submodule reference"验证主仓库子模块提交有效性
检查主仓库记录的子模块提交哈希是否在远程仓库存在:git ls-tree HEAD coq_serapy得到哈希值后,到对应远程仓库确认该提交是否存在。若不存在,需切换到远程仓库存在的分支/提交,再更新主仓库的子模块引用。
内容的提问来源于stack exchange,提问作者Charlie Parker
相关产品推荐
相关产品推荐

