No47-【原】-Git repository corrupt(incorrect header check; loose object is corrupt
问题描述
今天Coding完之后,正准备commit代码,结果报了个错,从没见过:
1 | % git commit |
开始分析
我一看,是data stream error, 又想到今天刚刚把移动硬盘强行拔掉,导致硬盘部分文件受损的事,我一想,完犊子,估计是git文件出问题了。然而我不懂啊,最后,狠下心,算了,直接先从github上clone昨天的代码,然后慢慢改吧(话说今天改了很多代码,加了很多代码来着)。
Clone远程库
开始克隆远程库,使用Android Studio,突然,蹦出个错:
1 | Clone failed Out of memory, malloc failed (tried to allocate 2934353408 bytes) |
看到这个,我猜到可能是传输数据大小限制问题,详情请查看我另外一篇博文。解决掉这个问题之后,顺利克隆远程库。
正式解决问题
但是,我还是不甘心,我实在是不想在昨天的代码上慢慢改了。于是,开始Google。在StackOverflow上,找到了一个同样的问题,下面有个21个赞的回答,我一想,有救了~>_<~+。没想到竟然真的治好了我,步骤如下:
- 进入本地git库,也就是.git文件夹的位置
运行
git fsck --full
,关于这条指令的作用,请看这里。然后,你可能看到下面这样的1
2
3
4
5Checking 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在执行下面的操作之前,墙裂建议备份.git/objects文件夹!
- 删除上述文件
.git/objects/86/e7247af5865e857a3b61eed99986e2d9538df1
,然后再次运行git fsck --full
重复步骤4,直到
git fsck --full
的提示信息变成类似下面这样的我只删了一次文件就OK了,然后重新commit,竟然OK,OMG。不过原帖中答主可是删了5次文件才弄好的。
参考资料
总结
咳咳,简单总结一下。果然是Google大法好,StackOverflow大法好,我在百度搜了好久没找到这个答案,而在Google直接就找到了。果然是百度娱乐,Google学术啊。
我的Github:http://github.com/wangyongf
感谢
感谢访问我的个人博客的朋友,如果您感觉本站对您搜索的问题有所帮助,并感觉对本站还满意的话,顶一下吧,希望您把本站分享给您的朋友!在此对您表示由衷的谢意! :)
本文标题:No47-【原】-Git repository corrupt(incorrect header check; loose object is corrupt
文章作者:王用
发布时间:2016-04-17 12:42:36
原始链接:http://blog.54yongf.com/Git/47.html
许可协议: "署名-非商用-相同方式共享 3.0" 转载请保留原文链接及作者。