当我尝试提交更改时,我得到这个错误:
error: object file .git/objects/31/65329bb680e30595f242b7c4d8406ca63eeab0 is empty
fatal: loose object 3165329bb680e30595f242b7c4d8406ca63eeab0 (stored in .git/objects/31/65329bb680e30595f242b7c4d8406ca63eeab0) is corrupt
我尝试了我得到的 git fsck:
error: object file .git/objects/03/dfd60a4809a3ba7023cbf098eb322d08630b71 is empty
fatal: loose object 03dfd60a4809a3ba7023cbf098eb322d08630b71 (stored in .git/objects/03/dfd60a4809a3ba7023cbf098eb322d08630b71) is corrupt
如何解决这个错误?
Git对象文件已经损坏(正如在其他回答中指出的那样)。这可能发生在机器崩溃等情况下。
我也有同样的问题。在阅读了这里的其他顶级答案之后,我发现了修复损坏的Git存储库的最快方法,使用以下命令(在包含.git文件夹的Git工作目录中执行):
(请务必先备份Git存储库文件夹!)
find .git/objects/ -type f -empty | xargs rm
git fetch -p
git fsck --full
这将首先删除导致整个存储库损坏的所有空对象文件,然后从远程存储库获取缺失的对象(以及最新的更改),然后执行完整的对象存储检查。在这一点上,它应该成功而没有任何错误(尽管仍然可能有一些警告!)
PS:这个答案表明你有一个Git存储库的远程副本
在某个地方(例如在GitHub上),损坏的存储库是本地存储库,它绑定到仍然完整的远程存储库。如果不是这样,那么不要尝试用我推荐的方法来修复它。
这个错误发生在我推动我的提交和我的计算机挂起。
这就是我解决它的方法。
修复步骤
git status
显示空/损坏的目标文件
rm .git/objects/08/3834cb34d155e67a8930604d57d3d302d7ec12
删除它
git status
我得到了致命的:坏对象头部消息
rm .git/index
我移除重置的索引。
git reset
无法解析对象“HEAD”。
git status
git pull
看看发生了什么
tail -n 2 .git/logs/refs/heads/MY-CURRENT-BRANCH
它输出log分支的最后两行,tail - n2,来显示最后两次提交哈希值。
git update-ref HEAD 7221fa02cb627470db163826da4265609aba47b2
我选择最后一个提交哈希
git status
它显示我所有的文件都已删除,因为我删除了.git/index文件
git reset
继续复位
git status
验证我的修复