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

【解决方案】git错误:对象文件为空 error: object file

问题

提前关闭虚拟机,使得git push中断,导致本地与云端版本不一致,出现对象文件为空的错误。现象如下:

(base) root@yyy-VMware-Virtual-Platform:~/test# git status
error: 对象文件 .git/objects/e0/1e63bbb4eae481da19737d3d1c166484a586d0 为空
error: 对象文件 .git/objects/e0/1e63bbb4eae481da19737d3d1c166484a586d0 为空
fatal: bad object HEAD

解决方案

  1. 使用git fsck --full查看有哪些空文件:
(base) root@yyy-VMware-Virtual-Platform:~/test# git fsck --full
error: 对象文件 .git/objects/06/df9fcbe1977eef884d21b2e22237ee494c32a5 为空
error: 不能 mmap .git/objects/06/df9fcbe1977eef884d21b2e22237ee494c32a5: 没有那个文件或目录
error: 06df9fcbe1977eef884d21b2e22237ee494c32a5:对象损坏或丢失:.git/objects/06/df9fcbe1977eef884d21b2e22237ee494c32a5
error: 对象文件 .git/objects/34/8161c71c36b4f84d7b6de4e65f8d7b5348ea40 为空
error: 不能 mmap .git/objects/34/8161c71c36b4f84d7b6de4e65f8d7b5348ea40: 没有那个文件或目录
error: 348161c71c36b4f84d7b6de4e65f8d7b5348ea40:对象损坏或丢失:.git/objects/34/8161c71c36b4f84d7b6de4e65f8d7b5348ea40
error: 对象文件 .git/objects/3d/97cab99f6f87d36857b0568c9d09b2f04143d2 为空
......
  1. rm删除空文件并再次git fsck --full,检查是否还有空文件。
rm .git/objects/44/92a05fc0954268d3c9fa4e21526e7d30fbdfc0
  1. 或可以cd到.git目录下运行find . -type f -empty -delete -print自动删除全部空文件
cd .git
find . -type f -empty -delete -print
  1. 最终确认git fsck --full
(base) root@yyy-VMware-Virtual-Platform:~/test# git fsck --full
正在检查对象目录: 100% (256/256), 完成.
error: refs/heads/main:无效的 sha1 指针 e01e63bbb4eae481da19737d3d1c166484a586d0
error: refs/remotes/origin/main:无效的 sha1 指针 e01e63bbb4eae481da19737d3d1c166484a586d0
error: HEAD:无效的 sha1 指针 e01e63bbb4eae481da19737d3d1c166484a586d0
error: HEAD:无效的引用日志条目 e01e63bbb4eae481da19737d3d1c166484a586d0
error: refs/heads/main:无效的引用日志条目 e01e63bbb4eae481da19737d3d1c166484a586d0
error: refs/remotes/origin/main:无效的引用日志条目 e01e63bbb4eae481da19737d3d1c166484a586d0
注意:无默认引用
error: 4492a05fc0954268d3c9fa4e21526e7d30fbdfc0: invalid sha1 pointer in cache-tree of .git/index
error: f5b273722fe29f4bd940c7c93aa9bec0823f7347: invalid sha1 pointer in cache-tree of .git/index
error: 772bd6dd528cbd80e0a2c3919394722f5148142b: invalid sha1 pointer in cache-tree of .git/index
悬空 blob 52118c85df4b575d091e3b3dd6338941686b4fb9
悬空 blob 9de56cc91fe3054ad5189b2264b708c794059411
悬空 blob ccd524e0f558b2d9da48c07a249ffc42926211b3
悬空 blob 37060e8fae0c48651ca1e90123b68fd24416cc31
  1. 运行git pull,拉取云端配置
    注意:此操作只会填补悬空的文件,不会覆盖本地文件。如果不放心可以本地先备份。
(base) root@yyy-VMware-Virtual-Platform:~/test# git pull
remote: Enumerating objects: 309, done.
remote: Counting objects: 100% (309/309), done.
remote: Compressing objects: 100% (256/256), done.
remote: Total 309 (delta 68), reused 289 (delta 48), pack-reused 0 (from 0)
接收对象中: 100% (309/309), 3.33 MiB | 2.53 MiB/s, 完成.
处理 delta 中: 100% (68/68), 完成.
已经是最新的。
  1. 完成本地的.git文件恢复

相关文章:

  • vincent,一个超酷的Python库
  • 详解Linux文件系统
  • 前端大模型入门:使用Transformers.js手搓纯网页版RAG(二)- qwen1.5-0.5B - 纯前端不调接口
  • git 基本原理
  • 软件设计——随手笔记
  • Pencils Protocol 全面推动市场,生态通证 DAPP 将持续通缩
  • 十进制与ip地址转换公式(EXCEL公式)
  • 【系统架构设计师】专题:系统分析和设计
  • Unity 与虚幻引擎对比:两大游戏开发引擎的优劣分析
  • LLM - 使用 XTuner 指令微调 多模态大语言模型(InternVL2) 教程
  • ​IAR全面支持国科环宇AS32X系列RISC-V车规MCU
  • 小灰的基金,终于回血了!
  • 百度智能体创建:情感领域的创新力量
  • 单位向量的定义和举例说明
  • websocket集群部署遇到的一些事
  • SD2.0 Specification之大容量卡与标准容量卡的命令差异
  • [Redis][典型运用][缓存]详细讲解
  • 5 apache poi实现excel的动态下拉框功能
  • RTA-OS Port Guide学习(三)-基于S32K324 OS
  • 一步一步丰富生成式语言模型系统
  • 碧桂园:砸锅卖铁保交房、持续推进保主体,尽快让公司恢复正常经营
  • 国家主席习近平在莫斯科出席红场阅兵式
  • 明明睡够了,怎么还有黑眼圈?可能是身体在求救
  • 梅花奖在上海|第六代“杨子荣”是怎样炼成的?
  • 见微知沪|优化营商环境,上海为何要当“细节控”自我加压?
  • 上海充电桩调研:须全盘考量、分步实现车网互动规模化