我最近一直在打git repo corruptions。只要我的虚拟机在保存状态时无法从保存状态恢复或出错,就会发生这种情况。每当它发生时,一些对象变空(提交,树,blob)
为澄清此事,其他非git数据还可以。只有git版本控制的数据才遇到这个问题。
我想了解腐败是如何发生的。该对象只是一个压缩内容,所以,即使它被保存到磁盘,它是如何变空的?
另外,请提出如何防止这种情况发生的建议。我试图有一个本地裸仓库,但即使是裸仓库也被破坏了。大多数时候我使用我的虚拟机进行离线操作,并且没有网络连接。因此,外部回购不是一种选择。
非常感谢任何指针。
答案 0 :(得分:2)
为避免这种情况,您可以在保存计算机状态之前,创建当前仓库的完整 bundle (git bundle
):
cd /path/to/your/repo
git bundle create ../repo.bundle --all
这样,如果您的git repo已损坏,您可以从该一个文件中将其克隆回来:
git clone repo.bundle