在执行git push时出错,因为提交刚完成,电源就断电了

编程语言 2026-07-09

在我最近一次提交之后,电源就断了

现在我的分支领先了15个提交,但如果我尝试推送,就会收到一个关于空对象的错误信息。

On branch social-extend
Your branch is ahead of 'origin/social-extend' by 15 commits.
  (use "git push" to publish your local commits)

➜  movie-club git:(social-extend) git push origin social-extend:social-extend
Enumerating objects: 163, done.
error: object file .git/objects/b8/faab9ddc086e929e1cd4f3f7884d480bca1bf6 is empty
error: object file .git/objects/cd/252c822087502d94f67e019c0790c4acec8503 is empty
Counting objects: 100% (163/163), done.
Delta compression using up to 12 threads
Compressing objects: 100% (122/122), done.
error: object file .git/objects/b8/faab9ddc086e929e1cd4f3f7884d480bca1bf6 is empty
fatal: unable to read b8faab9ddc086e929e1cd4f3f7884d480bca1bf6
remote: fatal: early EOF
error: remote unpack failed: index-pack failed
To github.com:SuperMo0/MoviesClub.git
 ! [remote rejected] social-extend -> social-extend (failed)
error: failed to push some refs to 'github.com:SuperMo0/MoviesClub.git'

解决方案

  1. 将你的分支回滚到之前的某个提交。

现有对象不会受到影响,只有新创建的对象会损坏。尝试 git reset HEAD^,或重置到一个特定的有效提交ID。

如果该命令不起作用,git update-ref refs/heads/social-extend HEAD^ 应该能解决。

  1. .git/objects/ 中查找所有0 字节的文件并将它们删除。

创建文件时,元数据会立即被保存,但数据可能尚未写入,因此表示该提交的文件最终为空。运行 find .git/objects/??/ -type f -size 0 -ls 来查找匹配项,然后手动删除它们。

  1. 运行 git fsck 来检查对象数据库是否还有其他问题。
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章