错误:对象文件为空.git / objects /../ ..为空 - 致命:松散的对象...已损坏

时间:2012-08-31 17:07:17

标签: git corrupt

所以这是过去三周内第五次发生这种情况,我真的很难过为什么会这样。这是我在'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中提取新的存储库,然后重新编辑更改。这可行,但是耗时且远非理想。我不一定想找到解决这个问题的方法,而是找出导致它的原因以及如何防止它再次发生。

3 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

git prune origin

答案 2 :(得分:0)

外行方式(使用 GITHUB 测试):

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

奖励:
9. 安心睡觉