当前位置: 首页 > news >正文

【git fetch submodule报错】Errors during submodule fetch 如何解决?

本教程针对git中进行git fetch origin 来获取远程仓库最新状态时发生的Errors during submodule fetch的问题,进行解答,同时也是我在做CS61B时进行协作时发生的问题(比如同时用Win主机和wsl进行协作)

问题重现

在skeleton-sp21的主仓库中添加了一个library-sp21的submodule,然后在另一台主机中运行git fetch origin时出现了以下报错Error:
SubmoduleFetchError
报错信息显示在fetch子模块的过程中出现了错误,原因是没有远程仓库中找不到该子模块引用的那条提交,也就是26c74c...的这一条

git子模块的本质

子模块是一个Git仓库里引用另一个Git仓库的方式
在主仓库的.gitmodules文件里记录了子模块路径和URL
主仓库本身并不会记录子模块的完整代码,而是记录该子模块仓库中的某一个commit
所以主仓库说的是:你这个子模块应该要checkout到这个特定的commit才对(比如26c74c...

问题核心

主仓库要求子模块library-sp21切换到26c74c...这个commit,但是Git去子模块仓库一看:这个commit并不存在!

解决方案

1.手动checkout子模块到一个存在的提交

cd library-sp21
git fetch
git checkout main    # 或者 master、或你知道的某个 tag/commit
cd ..
git add library-sp21
git commit -m "Fix broken submodule reference"

这样我们可以“修正”主项目对子模块的引用,从而避免引用不存在的commit

2.修改.gitmodule

在你fork主仓库的情况下,主项目的子模块引用的是它自己的子模块路径,你可能需要更改为自己的fork地址

vim .gitmoduls

然后修改URL,改为你自己可访问的地址,然后运行:

git submodule sync
git submodule update --init --recursive --force

3.重新初始化子模块(尝试自动修复)

git submodule deinit -f library-sp21
rm -rf .git/modules/library-sp21
git submodule update --init --recursive

通过运行上面的命令,我们做了三件事:

  1. 取消初始化子模块并删除其git配置和工作目录
  2. git submodule init
  • 读取.gitmodules中的子模块信息
  • 然后注册到本地的.git/config
  1. git submodule update
  • 去每个子模块的远程仓库拉取
  • checkout到主仓库指定的commit

我使用的解决方案

运行:

git submodule update --init --recursive

即可完美解决这个问题,再运行git fetch origin也没有再发生报错了

http://www.lryc.cn/news/587675.html

相关文章:

  • VUE export import
  • 【算法深练】BFS:“由近及远”的遍历艺术,广度优先算法题型全解析
  • 人工智能如何重构能源系统以应对气候变化?
  • 从数据洞察到设计创新:UI前端如何利用数字孪生提升产品交互体验?
  • Pythonic:Python 语言习惯和哲学的代码风格
  • vue中使用西瓜播放器xgplayer (封装)+xgplayer-hls 播放.m3u8格式视频
  • Vue+axios
  • Rust语言实战:LeetCode算法精解
  • 从“炼丹”到“流水线”——如何用Prompt Engineering把LLM微调成本打下来?
  • 内容管理系统指南:企业内容运营的核心引擎
  • Retinex视网膜算法(SSR、MSR、MSRCR)
  • JVM监控及诊断工具-命令行篇
  • AI香烟检测实战:YOLO11模型训练全过程解析
  • 【第一章编辑器开发基础第一节绘制编辑器元素_7折叠面板控件(7/7)】
  • python学智能算法(十八)|SVM基础概念-向量点积
  • 【第一章编辑器开发基础第二节编辑器布局_3GUI元素和布局大小(3/4)】
  • python学智能算法(十七)|SVM基础概念-向量的值和方向
  • CISSP通过回顾
  • Unity中HumanBodyBones骨骼对照
  • [Nagios Core] 通知系统 | 事件代理 | NEB模块,事件,回调
  • 上下文管理器 和 contextlib 模块
  • Cocos Creator 高斯模糊效果实现解析
  • 2025高防CDN硬核防御指南:AI+量子加密如何终结DDoS/CC攻击?
  • VyOS起步指南:用Docker快速搭建网络实验环境
  • MCP终极篇!MCP Web Chat项目实战分享
  • android tabLayout 切换fragment fragment生命周期
  • VScode设计平台demo&前端开发中的常见问题
  • CentOS系统哪些版本?分别适用于那些业务或网站类型?
  • VMware 虚拟机装 Linux Centos 7.9 保姆级教程(附资源包)
  • 【LeetCode】大厂面试算法真题回忆(107)--重组字符串