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

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

如何解决这个错误?


当前回答

Nathan VanHoudnos介绍的12步解决方法也帮助我摆脱了困境。谢谢。关键步骤是进入:

git fsck --full

并移除所有空对象

rm .git/objects/...

然后有两行诗:

tail -n 2 .git/logs/refs/heads/master

返回值

git update-ref HEAD ...

此时,我已经没有错误了,所以我备份了最近的文件。然后执行Git pull和Git push。我将备份复制到Git存储库文件中,并进行了另一次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 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

验证我的修复

这个问题的解决方法很简单

•找到那个文件

•就像我的情况一样

error: object file .git/objects/f1/a0e726cd3505a9be8dffaa78077dfe3a497eaf is empty
fatal: loose object f1a0e726cd3505a9be8dffaa78077dfe3a497eaf (stored in .git/objects/f1/a0e726cd3505a9be8dffaa78077dfe3a497eaf) is corrupt

然后直接删除 a0e726cd3505a9be8dffaa78077dfe3a497eaf

Or

rm .git/objects/f1/a0e726cd3505a9be8dffaa78077dfe3a497eaf

我在使用虚拟机时经常遇到这个问题。

对我来说,以下工作:

cd /path/to/your/project
rm -rf .git

如果你想为自己节省一些下载-进入你的文件资源管理器,删除文件夹中已经提交的所有文件,并保留在你的/vendor和/node_modules(我使用PHP Composer和npm)文件夹中。

然后创建一个新的存储库:

git init

添加遥控器

git remote add origin ssh://git@github.com/YourUsername/repoName.git

然后去取树枝/全部

git fetch origin somebranch

大家来看看

git checkout somebranch

那么你应该在错误之前的点。

如果你有一个旧的备份,并且很着急:

为当前的Git-broken项目路径做一个新的备份。

移动你的.git到垃圾桶(永远不要删除) 从旧备份中复制.git Git pull(会产生合并冲突) 将你所有的源文件(你放入Git中的所有内容)移到垃圾:./src(从不删除) 从新的备份中复制所有源代码(放入Git中的所有内容) 接受所有“合并”在git gui,推送和…拍拍手!