Git子模块更新时提交未找到的问题定位与解决咨询
解决Git子模块更新失败问题
一、定位出错的子模块
错误日志已直接指明子模块路径:Fetched in submodule path 'linux',出错的就是名为linux的子模块。若需进一步确认,可执行以下命令查看所有子模块的配置与状态:
git submodule status
该命令会列出每个子模块的当前提交哈希、路径和名称,能直观验证linux子模块的目标提交正是报错中的1e07d0ce57c1bd5cf2e9b279deca2e959de88135。
二、切换到可用的提交版本
由于目标提交已被远程仓库移除,需将子模块切换至存在的有效版本,操作步骤如下:
进入子模块目录
cd linux拉取远程仓库最新信息并查看可用版本
先同步远程仓库的分支和标签:git fetch origin查看远程可用的稳定分支:
git branch -r若要查找5.12系列的剩余可用版本,搜索对应标签:
git tag -l "v5.12.*"提示:如果5.12系列已全部被移除,建议切换至长期支持(LTS)版本,比如
v5.15.x系列。切换到目标可用版本
假设找到可用版本为v5.12.20,执行切换命令:git checkout v5.12.20回到主仓库提交子模块版本变更
返回主仓库目录:cd ..提交子模块的版本更新:
git add linux git commit -m "Update linux submodule to v5.12.20 (valid available commit)"重新执行子模块更新
此时再执行更新命令即可正常完成:git submodule update --init --recursive
三、备选方案:更换子模块远程仓库
若原远程仓库不再维护对应版本,可修改子模块的远程地址为官方稳定版仓库:
git config -f .gitmodules submodule.linux.url https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
同步配置并重新拉取:
git submodule sync git submodule update --init --recursive
内容的提问来源于stack exchange,提问作者mans
相关产品推荐
相关产品推荐

