美文网首页前端进阶之路让前端飞程序员
修复Git 的版本库object empty异常问题

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

作者: 果汁凉茶丶 | 来源:发表于2018-07-05 12:10 被阅读6次

问题描述

  笔者某天在提完代码时并无发现异常,但第二天要再次提交时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 .git/logs/refs/heads/master

  如果你已经在.git目录上,删掉路径前的.git即可,这里是为了写明路径。

  获取最新的版本号,样子如: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中一文

相关文章

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

    问题描述   笔者某天在提完代码时并无发现异常,但第二天要再次提交时git库报了如下错误; 意为库的版本管理文件中...

  • 2018-01-28

    git学习笔记 根据廖雪峰老师教程学习整理的常用命令 git版本库创建 文件管理相关 远程库 分支管理 bug修复...

  • 浅析git底层存储原理 2021-07-14

    git三区 git三大区:工作区、暂存区和git版本库 1.git版本库 先从git版本库说起,git版本库对应....

  • 我愚蠢的git错误

    git aborting commit due to empty commit message. 这个异常的原因是...

  • git命令总结

    Git 命令总结: 创建版本库 克隆远程版本库 $ git clone 初始化本地版本库 $ git init #...

  • 测试123

    版本库(Repository) 工作区有一个隐藏目录.git,这个不算工作区,而是git的版本库。 Git的版本库...

  • Git 常用命令速查表

    创建版本库 $ git clone #克隆远程版本库 $ git init ...

  • 《命令行》Git

    创建版本库 git clone 克隆远程版本库 git init 初始化本地版本库 修改和提交 git statu...

  • Git常用命令速查表

    创建版本库 $ git clone #克隆远程版本库 $ git init #初始化本地版本库 修改和提交...

  • git指令

    git常用命令 创建版本库 $ git clone #克隆远程版本库 $ git init #初...

网友评论

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

    本文链接:https://www.haomeiwen.com/subject/xcouuftx.html