当我尝试提交更改时,我得到这个错误:

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文件的项目位于以下目录:projects/corrupt_git/

Cp projects/corrupt_git projects/backup -(可选)进行备份 git克隆[repo URL] projects/clean_git -这样你就可以得到projects/clean_git Rm -rf corrupt_git/。Git / -删除损坏的。Git文件夹 mv clean_git /。Git / corrupt_git/ -将干净的Git移动到corrupt_git/.git Git的状态在projects/corrupt_git -以确保它工作

其他回答

复制所有文件(在包含.git文件夹的文件夹中)到备份,删除所有文件,然后重新启动。确保你手边有Git遥控器:

git remote -v
 origin    git@github.com:rwldrn/idiomatic.js.git (fetch)
 origin    git@github.com:rwldrn/idiomatic.js.git (push)

Then

mkdir mygitfolder.backup
cp mygitfolder/* mygitfolder.backup/
cd mygitfolder
rm -r * .git*
git init
git remote add origin git@github.com:rwldrn/idiomatic.js.git

然后手动合并任何新文件,并试着让你的电脑开着。

在这种情况下,我通过遵循这个问题来解决我的问题。

从存储库目录中删除。git文件夹。(为安全起见保留备份) 克隆我的回购在另一个目录。 从新的克隆目录复制.git文件夹。 粘贴到之前出现问题的目录中。

检查git状态,希望你能看到你所有的变化。现在你可以承诺并推进了。

我只是有同样的问题:在拉远存储库后,当我做了一个git状态,我得到:

"错误:目标文件(…)为空" “致命的:松动的物体(…)已损坏”

我解决这个问题的方法是:

git藏 错误地删除Git文件(我不确定这是必要的) Git仓库清空

我不知道到底发生了什么,但这些指示似乎让一切都变得干净了。

我遇到了同样的问题,我用了一个非常简单的方法来解决它。我发现那些丢失的文件存在于我队友的电脑上。

我将这些文件一个一个地复制到Git服务器(总共9个文件),这样就解决了这个问题。

我解决了这个问题,删除了git fsck检测到的各种空文件,然后运行一个简单的git拉。

我感到失望的是,现在即使文件系统实现了日志记录和其他“事务性”技术来保持文件系统正常运行,Git也会因为设备上的电源故障或空间问题而进入损坏状态(并且无法自行恢复)。