每当我从我的遥控器,我得到以下关于压缩的错误。当我运行手动压缩,我得到相同的:

$ 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

有人能帮我解读一下吗?


当前回答

有同样的问题后,我的linux薄荷崩溃,我按下电源按钮关闭我的笔记本电脑,这就是为什么我的。git是腐败的

find .git/objects/ -empty -delete

在那之后,我得到致命错误:坏对象头。我刚刚重新初始化了我的git

git init

并从远程repo获取

git fetch

要检查git,请使用

git status

又是工作。我不会丢失局部更改,所以我可以在不重写代码的情况下提交

其他回答

垃圾收集解决了我的问题:

git gc --aggressive --prune=now

它需要一段时间才能完成,但是每个松散的对象和/或损坏的索引都是固定的。

只需删除。git文件夹并重新添加。这个简单的解决方法对我很有效。

我遵循了这里的许多其他步骤;Linus对如何查看git树/对象并找到缺失内容的描述尤其有用。git恢复损坏的blob

但最后,对我来说,由于部分磁盘故障,我有松散/损坏的树对象,并且树对象不容易恢复/不被那个文档覆盖。

最后,我将冲突的对象/<ha>/<hash>移出,并使用git unpack-objects与最新克隆的包文件一起使用。它能够恢复丢失的树对象。

仍然给我留下了许多悬空的斑点,这可能是解压缩以前存档的东西的副作用,并在这里的其他问题中解决

在我的(Windows)机器决定重新启动后,我得到了这个错误。

谢天谢地,我的远程存储库是最新的,所以我只是做了一个新的Git克隆…

我也有同样的问题在我的裸远程git回购。经过大量的故障排除后,我发现我的一个同事提交了。git/objects中的一些文件的权限是440 (r—r-----),而不是444 (r—r—r—)。在让同事用“chmod 444 -R objects”在裸git repo中更改权限后,问题得到了解决。