美文网首页前端进阶之路让前端飞程序员
修复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异常问题

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