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

$ 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

有人能帮我解读一下吗?


当前回答

Try

git stash

这对我很管用。它会隐藏你没有提交的任何东西,从而解决了问题。

其他回答

Try

git stash

这对我很管用。它会隐藏你没有提交的任何东西,从而解决了问题。

简单地运行一个git修剪修复了这个问题

user1055643的答案缺少最后一步:

rm -fr .git
git init
git remote add origin your-git-remote-url
git fetch
git reset --hard origin/master
git branch --set-upstream-to=origin/master master

这似乎是Dropbox或符号链接文件夹出Dropbox为我的一个问题。其他类似的服务可能也是如此。当我去git push时,我会得到腐败松散对象错误。对我来说,在macOS Big Sur上,修复方法只是将回购的递归副本复制到Dropbox之外的目录中。我相信这导致Dropbox为损坏的动态引用拉出实时文件。复制后,我立即能够git推送没有错误。

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

git gc --aggressive --prune=now

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