在收到此错误之前,我立即执行了以下操作:
user@thismachine:~/file/path$ git add *
user@thismachine:~/file/path$ git push
^C
user@thismachine:~/file/path$ git commit -m "my commitmesg"
Run Code Online (Sandbox Code Playgroud)
(我惊慌失措,因为我在推动之前忘了添加一个提交,所以我cntrl + c'ed它.
现在,我从git fsck -full收到以下错误:
error: inflate: data stream error (incorrect header check)
error: corrupt loose object '5cdeb9c3a1fe164cb4d2779d1e0d9d9f4ef18c6a'
fatal: loose object 5cdeb9c3a1fe164cb4d2779d1e0d9d9f4ef18c6a (stored in .git/objects/5c/deb9c3a1fe164cb4d2779d1e0d9d9f4ef18c6a)
Run Code Online (Sandbox Code Playgroud)
git cat-file -t 5cdeb9c3a1fe164cb4d2779d1e0d9d9f4ef18c6a返回此对象是提交.
搜索之后,我发现如果对象是blob,如何解决这个问题,而不是如果它是一个提交.
sak*_*ias 26
来自http://vincesalvino.blogspot.ca/2013/08/git-empty-files-corrupt-objects-and.html的解决方案让我解决了这个问题:
find .git/objects/ -size 0 -exec rm -f {} \;
Run Code Online (Sandbox Code Playgroud)
Sch*_*ern 17
首先,备份现有存储库. cp -r
或者其他的东西.这样,如果你试图修复你的存储库搞砸了,你可以恢复.
最简单的尝试是使用工作文件替换该损坏的目标文件.如果您有存储库的备份,请使用它.否则,git clone
从远程存储库执行a 以获取新副本并复制.git/objects/5c/deb9c3a1fe164cb4d2779d1e0d9d9f4ef18c6a
到现有的副本中.看看是否能修复它.
谢谢回复.我在新的克隆仓库中运行它并返回它解压缩100%的对象但是它们不在那个仓库的.git/objects/pack中.
所以,今天早上尝试了一些有用的东西.1.将我的github存储库克隆到一个单独的新目录中.2.将本地更改的文件(我想要最初提交)复制到我的新克隆存储库中,然后将它们推送到github.3.修复我的旧本地存储库,然后再将其克隆到与旧存储库相同的文件路径中.
与 Schwerm 的回答非常相似,但我必须初始化一个新的存储库来解压.pack
文件:
git clone <repo-uri> my_repo.fresh_clone
mkdir my_repo.newly_unpacked
cd !$
git init
for pack_file in ../my_repo.fresh_clone/.git/pack/*.pack; do
git unpack-objects < $pack_file
done
Run Code Online (Sandbox Code Playgroud)
然后我my_repo.newly_unpacked/.git/objects/<xx>/<sha1>
按照错误消息的指示复制了文件。我被抓住了,因为一些操作,例如git checkout
显示比简单的更多丢失的对象git status
,所以最好在清理它们之前保留恢复目录。
归档时间: |
|
查看次数: |
39451 次 |
最近记录: |