Fork me on GitHub
文章目录
  1. 1. 问题描述
  2. 2. 开始分析
  3. 3. Clone远程库
  4. 4. 正式解决问题
  5. 5. 参考资料
  6. 6. 总结
  7. 7. 感谢

问题描述


今天Coding完之后,正准备commit代码,结果报了个错,从没见过:

1
2
3
4
% git commit
error: inflate: data stream error (incorrect header check)
error: unable to unpack a94406345ac44982b00cf57b4b9660a35436637f header
fatal: a94406345ac44982b00cf57b4b9660a35436637f is not a valid object

开始分析


我一看,是data stream error, 又想到今天刚刚把移动硬盘强行拔掉,导致硬盘部分文件受损的事,我一想,完犊子,估计是git文件出问题了。然而我不懂啊,最后,狠下心,算了,直接先从github上clone昨天的代码,然后慢慢改吧(话说今天改了很多代码,加了很多代码来着)。

Clone远程库


开始克隆远程库,使用Android Studio,突然,蹦出个错:

1
2
Clone failed Out of memory, malloc failed (tried to allocate 2934353408 bytes)
write error: Invalid argument

看到这个,我猜到可能是传输数据大小限制问题,详情请查看我另外一篇博文。解决掉这个问题之后,顺利克隆远程库。

正式解决问题


但是,我还是不甘心,我实在是不想在昨天的代码上慢慢改了。于是,开始Google。在StackOverflow上,找到了一个同样的问题,下面有个21个赞的回答,我一想,有救了~>_<~+。没想到竟然真的治好了我,步骤如下:

  1. 进入本地git库,也就是.git文件夹的位置
  2. 运行git fsck --full,关于这条指令的作用,请看这里。然后,你可能看到下面这样的

    1
    2
    3
    4
    5
    Checking object directories: 100% (256/256), done.
    error: inflate: data stream error (incorrect header check)
    error: unable to unpack 86e7247af5865e857a3b61eed99986e2d9538df1 header
    error: inflate: data stream error (incorrect header check)
    fatal: loose object 86e7247af5865e857a3b61eed99986e2d9538df1 (stored in .git/objects/86/e7247af5865e857a3b61eed99986e2d9538df1) is corrupt
  3. 在执行下面的操作之前,墙裂建议备份.git/objects文件夹

  4. 删除上述文件.git/objects/86/e7247af5865e857a3b61eed99986e2d9538df1,然后再次运行git fsck --full
  5. 重复步骤4,直到git fsck --full的提示信息变成类似下面这样的
    提醒信息:dangling blob

  6. 我只删了一次文件就OK了,然后重新commit,竟然OK,OMG。不过原帖中答主可是删了5次文件才弄好的。

参考资料


http://stackoverflow.com/questions/23725925/git-repository-corrupt-incorrect-header-check-loose-object-is-corrupt

总结


咳咳,简单总结一下。果然是Google大法好,StackOverflow大法好,我在百度搜了好久没找到这个答案,而在Google直接就找到了。果然是百度娱乐,Google学术啊。
我的Github:http://github.com/wangyongf

感谢

感谢访问我的个人博客的朋友,如果您感觉本站对您搜索的问题有所帮助,并感觉对本站还满意的话,顶一下吧,希望您把本站分享给您的朋友!在此对您表示由衷的谢意! :)