修复Git 的版本库object empty异常问题

问题描述

  笔者某天在提完代码时并无发现异常,但第二天要再次提交时git库报了如下错误;

error: object file .git/objects/f2/18e1c038cb0b303cf3f388d6f32f82159c25ba is empty
error: object file .git/objects/f2/18e1c038cb0b303cf3f388d6f32f82159c25ba is empty
fatal: loose object f218e1c038cb0b303cf3f388d6f32f82159c25ba (stored in .git/objects/f2/18e1c038cb0b303cf3f388d6f32f82159c25ba) is corrupt

意为库的版本管理文件中存在空文件,git错误一般都是版本冲突或版本滞后等错误,第一次遇到这种错误,具体由什么操作导致的,笔者不得而知。查了些资料做了总结,觉得有必要分享给大家供参考

修复办法

1.打开项目工程.git目录

  该问题是版本库问题,那么发生问题的文件肯定是在.git目录中找咯.

cd  workspace/your-project/.git

2.删除目录下的所有空白文件

  错误信息中含有空白文档,这肯定是不正确的,产生原因为上次提交代码或者其他错误操作导致最新版本生成了错误文件或空白文件。明白一个信息,我们每次提交代码,git都会将我们所提交的版本号和提交信息记录到各自相应的文档当中,以便用户检索,如版本信息路径为: ./.git/logs/HEAD; commit信息路径为./.git/logs/refs/heads/master

find . -type f -empty -delete -print

  删除了之后,检查一下文件

git fsck

3.查看一下 HEAD 版本信息文件
git reflog

  因为我的版本信息是坏的,执行命令之后看见打印如下,

fatal: bad object HEAD

4.修改指向到最新的正确的版本号上

  版本文件存在错误,我们需要回退到最新的正确的版本上,因此我们需要知道最新的版本号, 这里打印出最后两条版本记录如下

tail -n 2 logs/refs/heads/master

  获取最新的版本号,样子如:f6a323e2d4ccffebe45e2bdb2c66f2860df56b29,检查一下该版本是否真是可用

git show f6a323e2d4ccffebe45e2bdb2c66f2870df56b29

  如果打印类似如下信息,说明你该次提交信息是有效记录的,说明我们我们可以指向该版本号

commit f6a323e2d4ccffebe45e2bdb2c66f2870df56b29
Author: zhangfangshuai <zhangfangshuai@shouqiev.com>
Date:   Tue Jul 3 22:22:54 2018 +0800

    add: tranglePicker component

diff --git a/app/components/cities.js b/app/components/cities.js
index f8b904b..00d5401 100644
--- a/app/components/cities.js
+++ b/app/components/cities.js
@@ -1,8 +1,8 @@

5.更新至正确的版本号
git update-ref HEAD f6a323e2d4ccffebe45e2bdb2c66f2860df56b29

  等待执行完成,再用git fsck 检查一下

6.处理冲突和提交代码

  到这里,版本库已经修复完成,但是或许你还存在本地和远程库中的代码冲突,如果有,手动merge一下再提交即可。


参考资料来自 stack overflow中一文

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Git 命令行学习笔记 Git 基础 基本原理 客户端并不是只提取最新版本的文件快照,而是把代码仓库完整的镜像下来...
    sunnyghx阅读 4,185评论 0 11
  • Git 基础 基本原理 客户端并不是只提取最新版本的文件快照,而是把代码仓库完整的镜像下来。这样一来,任何一处协同...
    __silhouette阅读 16,247评论 5 147
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,918评论 19 139
  • 浮光若影阅读 181评论 0 0
  • WHY(为什么要用分布式锁?) 目前几乎很多大型网站及应用都是分布式部署的,分布式场景中的数据一致性问题一直是一个...
    Neo_zero阅读 371评论 0 1

友情链接更多精彩内容