每当我从我的遥控器,我得到以下关于压缩的错误。当我运行手动压缩,我得到相同的:
$ git gc
error: Could not read 3813783126d41a3200b35b6681357c213352ab31
fatal: bad tree object 3813783126d41a3200b35b6681357c213352ab31
error: failed to run repack
有人知道该怎么做吗?
从cat文件中我得到了这个:
$ git cat-file -t 3813783126d41a3200b35b6681357c213352ab31
error: unable to find 3813783126d41a3200b35b6681357c213352ab31
fatal: git cat-file 3813783126d41a3200b35b6681357c213352ab31: bad file
从git fsck中我得到了这个(不知道它是否真的相关):
$ git fsck
error: inflate: data stream error (invalid distance too far back)
error: corrupt loose object '45ba4ceb93bc812ef20a6630bb27e9e0b33a012a'
fatal: loose object 45ba4ceb93bc812ef20a6630bb27e9e0b33a012a (stored in .git/objects/45/ba4ceb93bc812ef20a6630bb27e9e0b33a012a) is corrupted
有人能帮我解读一下吗?
对我来说,这是由于在做git推时发生的电源故障。
这些信息是这样的:
$ git status
error: object file .git/objects/c2/38824eb3fb602edc2c49fccb535f9e53951c74 is empty
error: object file .git/objects/c2/38824eb3fb602edc2c49fccb535f9e53951c74 is empty
fatal: loose object c238824eb3fb602edc2c49fccb535f9e53951c74 (stored in .git/objects/c2/38824eb3fb602edc2c49fccb535f9e53951c74) is corrupt
我尝试了git fsck之类的东西,但这没有帮助。
由于崩溃发生在git推送期间,它显然发生在客户端重写期间,发生在服务器更新之后。我环顾四周,发现c2388在我的例子中是一个提交对象,因为它是由.git/refs中的条目引用的。所以我知道,当我查看历史(通过web界面或第二个克隆)时,我将能够找到c2388。
在第二个克隆中,我执行了git log -n 2 c2388来识别c2388的前身。然后我手动修改了.git/refs/heads/master和.git/refs/remotes/origin/master作为c2388的前身,而不是c2388。
然后我可以进行git取回。
git获取失败了几次,因为空对象上的冲突。我删除了这些空对象,直到git获取成功。这已经修复了存储库。
在虚拟机上工作,在我的笔记本上,电池没电了,得到这个错误;
error: object file .git/objects/ce/theRef为空
文件.git/objects/ce/theRef是空的
(存储在.git/objects/ce/theRef中)已损坏
我设法让回购工作再次只有2个命令,而没有丢失我的工作(修改文件/未提交的更改)
find .git/objects/ -size 0 -exec rm -f {} \;
git fetch origin
在那之后,我运行了git状态,回购很好,有我的更改(等待提交,现在就做…)
Git版本1.9.1
请记住备份您所记得的所有更改,以防此解决方案不起作用,需要更激进的方法。