如何在git中将损坏的松散对象修复为提交?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (23)

在收到此错误之前,我执行了以下操作:

user@thismachine:~/file/path$ git add *
user@thismachine:~/file/path$ git push 
^C
user@thismachine:~/file/path$ git commit -m "my commitmesg"

(我慌了,因为我忘了在推送前加一个提交,所以我把它加进去了。)

现在,我从git fsck完全接收到以下错误:

error: inflate: data stream error (incorrect header check)
error: corrupt loose object '5cdeb9c3a1fe164cb4d2779d1e0d9d9f4ef18c6a'
fatal: loose object 5cdeb9c3a1fe164cb4d2779d1e0d9d9f4ef18c6a (stored in .git/objects/5c/deb9c3a1fe164cb4d2779d1e0d9d9f4ef18c6a)

git cat-file-t5cdeb9c3a1fe164cb4d2779d1e0d9d9f4ef18c6a返回该对象是COMMIT。

提问于
用户回答回答于

首先,备份现有的存储库。cp -r或者别的什么。这样,如果试图修复存储库,更糟的是,可以恢复。

最简单的尝试就是用一个工作的对象文件替换损坏的对象文件。如果有存储库的备份,请使用它。否则做一个git clone从远程存储库获得一个新的副本和副本。.git/objects/5c/deb9c3a1fe164cb4d2779d1e0d9d9f4ef18c6a进入你现有的破碎的世界。看看能不能解决问题。

用户回答回答于

解决办法

find .git/objects/ -size 0 -exec rm -f {} \;

扫码关注云+社区