【问题标题】:error: object file is empty .git/objects/../.. is empty -- fatal: loose object ... is corrupt错误:目标文件为空 .git/objects/../.. 为空 - 致命:松散的对象...已损坏
【发布时间】:2012-08-31 17:07:17
【问题描述】:

所以这是过去三周内第五次发生这种情况,我真的很困惑为什么这种情况会一直发生。这是我执行“git status”时得到的确切消息

error: object file .git/objects/48/088f00d90b0d27de65336bb9ed9a75b0cfed33 is empty
fatal: loose object 48088f00d90b0d27de65336bb9ed9a75b0cfed33 (stored in .git/objects/48/088f00d90b0d27de65336bb9ed9a75b0cfed33) is corrupt

我已经尝试过一些建议,例如删除损坏的对象,但同样的错误出现在另一个松散的对象上。每次我这样做时,最终都会有大约 30 个松散的对象我必须删除,然后在所有损坏的对象都消失后它仍然给我一个错误。

这是第五次发生这种情况,git 或与之相关的东西一定有问题。我已经尝试重新安装 git,但我仍然得到了损坏的对象。我正在使用运行 Ubuntu 的虚拟机,如果这会导致这样的事情,我不知道。我也尝试过切换到 Linux mint,我也解决了这个问题。

最后,我总是将更改保存到一个文本文件,删除我的存储库,从 git hub 中提取新存储库,然后重新编辑更改。这可行,但它很耗时,而且远非理想。我不一定在寻找解决此问题的方法,而是在寻找导致它的原因以及如何防止它再次发生。

【问题讨论】:

  • 您使用什么文件系统?存储库是在 VM 的虚拟驱动器上还是通过 NFS/CFS 或环回挂载或主机上本地设备的直接 ext2/ext3/jfs/reiserfs/xfs/... 挂载或 SAN 磁盘访问?有问题的文件系统是否已满,或者足够接近它以致在某些操作期间可能会满?您的消息/系统日志文件中有任何磁盘/文件系统错误吗?
  • 我正在使用一个格式化为 ext4 的虚拟硬盘驱动器来存储存储库。 vhd 的容量为 100 GB,而我只有 20 GB,所以我还差得很远。也没有文件系统错误...
  • 看到这个出色的答案,stackoverflow.com/a/12371337/23118,或多或少是相同的问题。

标签: git corrupt


【解决方案1】:

外行方式(用 GITHUB 测试):

  1. 转到您的项目目录
  2. 显示隐藏文件
  3. 删除.git文件夹
  4. 将您的(远程)存储库克隆到其他目录中
  5. 显示隐藏文件
  6. 复制.git文件夹
  7. 将其粘贴到您的旧项目目录中
  8. 继续正常操作:git addgit commitgit push

奖金:
9. 睡个安稳觉

【讨论】:

  • 这看起来非常流畅,并且假设一个人经常推送到远程应该是最小的破坏
【解决方案2】:

这通常不会发生,因为 git 首先将文件内容写入临时文件,然后将文件重命名为最终位置。在实践中,由于文件系统损坏,我确实看到了空的 Git 对象文件(VirtualBox 的 vboxsf,用于文件夹共享,每当我看到人们抱怨这样的空文件时,似乎都是有罪的)。

core.fsyncobjectfiles 设置为true 可能会有所帮助。

【讨论】:

    【解决方案3】:

    运行 git prune 对我有用! 您可能会丢失 origin 没有的旧本地/非活动分支

    git prune origin
    

    【讨论】:

      【解决方案4】:

      就我而言,我发现此错误是由于我的本地存储库位于 NFS 挂载的文件系统上造成的。如果存储库位于本地驱动器上,则它可以正常工作。我仍在寻找 NFS 问题是否有解决方法 - 也许 .gitignore 用于 .nfs* 文件。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-05-14
        • 2014-07-06
        • 2016-02-18
        • 1970-01-01
        • 2011-12-01
        • 2011-05-09
        • 2012-07-27
        相关资源
        最近更新 更多