如何防止我的 Git 文件损坏?

6
我正在使用VMWare的虚拟Ubuntu 16.04环境进行Android Studio项目开发。Git已经正常设置,大部分时间都能工作,但是偶尔(至少在过去两个月中出现了三次)会出现Git损坏的情况。
error: object file .git/objects/bb/2b004268181780ddea02ea4313142fc36a0541 is empty
error: object file .git/objects/bb/2b004268181780ddea02ea4313142fc36a0541 is empty
fatal: loose object bb2b004268181780ddea02ea4313142fc36a0541 (stored in .git/objects/bb/2b004268181780ddea02ea4313142fc36a0541) is corrupt

我不是在询问如何修复这些错误,我已经修复了几次,但它们一直发生,这真的很烦人和耗费时间去修复。是什么导致这种情况发生?
我与git的正常日子是打开VMWare,登录我的虚拟机,并打开android studio,在一天结束之前我不会碰git。我以两种方式结束一天。
1. 我点击Android Studio上的“文件->退出”按钮,git提交一些东西,然后关闭VMWare。然后关闭台式机。 2. 与第一种方式相同,除了我保留VMWare打开状态,那天我没有进行git提交,“Ctrl-alt-del”并将桌面设置为锁定模式。
或者两者的某种变化。
通常我在尝试提交时遇到损坏。

Hard Disk Settings

额外的VMWare设置:


只是猜测这与虚拟存储有关。你能提供文件系统的详细信息吗?Git仓库保存在网络共享还是弹性VHD中? - Jeff Puckett
1
您的虚拟机具有虚拟存储,您可以在创建虚拟机时在VMware中配置选项。既然您说它在我的文档中,那么我很确定这不是网络共享。因此,弹性存储是一种选项,可以选择固定的VHD大小,将其分配到物理磁盘上的全部空间,或者欺骗客户机,只给它实际需要的空间。 - Jeff Puckett
我在问题中添加了我的虚拟机设置图像,但我相当确定我的设置是根据您的定义使用弹性存储的。 - CookieMonster
你能展示一下 硬盘 (SCSI) 20 GB 的设置吗? - Jeff Puckett
1
有几件事情引起了我的注意。1)你的磁盘似乎只有400MB的可用空间,这样运行下去往往会导致一些奇怪的问题。2)“此硬盘未预分配磁盘空间。硬盘内容存储在多个文件中”是我所说的弹性。在运行时您将无法更改它,而且我不确定您是否能够更改它 - 您可能需要重新开始使用新的磁盘。但是,请先尝试将大小增加几个GB,看看是否有帮助。如果没有,则尝试使用固定大小的预分配磁盘。 - Jeff Puckett
显示剩余2条评论
2个回答

3
如果您遇到问题,而磁盘大小不是问题所在,那么以下内容可能会有所帮助:我正在关闭电脑时,一直收到git repo错误的提示(我还注意到启动时有多个日志恢复)。然后我尝试通过文件菜单发送关闭信号;它指示我有打开的文件。我怀疑关闭允许这些文件关闭;我怀疑其中一些是git repo文件。
这样就消除了日志记录错误,到目前为止我没有看到任何git repo错误。最好的选择可能是机器菜单下的ACPI关闭菜单选项。

1

我创建了一个新的虚拟机,大小是原来的两倍,自那以后问题就没有再出现,所以我认为这就是答案。如果我再次看到这个问题,我会更新这个信息。


有更新吗?已经过去一年了,你遇到过 Git 损坏的情况吗? - Joe Yahchouchi
2
我离开公司大约一年,那时候没有发现任何破坏行为。 - CookieMonster

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接