首页 > 解决方案 > 从 Visual Studio 提交对 git 的更改时出现致命错误

问题描述

所以一切工作正常,直到昨天我写了一些代码并推送,但在 GitHub 中没有任何改变,所以我来添加评论行并提交,然后它说致命错误:

Git 因致命错误而失败。错误:“DataAccess/Concrete/EntityFramework/EfColorDal.cs”的无效对象 100644 342bad3922f69c8ae111f019ceffc916dd4982cb 错误:坏树对象 HEAD

首先路径指向另一个类,我删除并再次编写它,当我再次提交时,这次它显示了这个类,我认为它会继续下去。当我从互联网上用尽所有尝试时,我决定重新启动,再次打开时显示修复 D 盘中的错误,我的解决方案在哪里。它修复了大约一个小时,当它终于结束时,什么都没有改变。

当我运行 git --fsck 之类的代码时,我使用 gitbash 控制台执行代码,它说:

检查对象目录:100% (256/256),完成。

注意: HEAD 指向一个未出生的分支(主)

注意:没有默认引用

缺少树 4b825dc642cb6eb9a060e54bf8d69288fbee4904

由于我对 git 编码一无所知,所以我尝试了一些以前的帖子建议的东西,但都没有奏效。我的本地存储库在 C 盘中,它保存了昨天之前的代码,所以我可以再次编写代码,但不能保证它不会再次发生,所以我愿意提供任何帮助。谢谢

标签: gitvisual-studiogithubgit-commit

解决方案


再次打开时Fixing errors in D disk

这是什么“它”?我认为“它”是您的操作系统。

它修复了大约一个小时,当它终于结束时,什么都没有改变。

我认为此时有几件事发生了变化。当您的操作系统由于意外的电源故障、磁盘错误或其他硬件问题而试图“修复”文件系统上的问题时,您的操作系统要做的事情之一就是删除各种文件。本质上,操作系统发现虽然创建了某个文件(因此它看起来是有效的),但它从未完成(因此它实际上是无效的)。操作系统对此问题的解决方案是删除该文件。

同时,Git 本身对某些文件删除非常敏感。几个崩溃后的删除是常见的,每一个都以特定的方式破坏 Git。该git fsck命令检查这种损坏(以及其他):

  • 删除包含分支数据的文件会产生诸如notice: HEAD points to an unborn branch (master).

  • 删除包含内部树或 blob 对象的文件可能会产生有关丢失树和/或 blob 对象的消息。

D:这是您的 Git 在此处生成的两条消息,因此我们可以得出结论,驱动器上的存储库可能已损坏,可能无法恢复。

我的本地存储库在 C 盘中,它包含昨天之前的代码...

存储库的 GitHub 副本也可能完好无损,并且与您创建的一样是最新的。这就是为什么(或者更好的副词是how)Git 作为一个分布式系统,非常有弹性:即使存储库的多个副本被销毁,其他副本仍然可以正常工作。

所以我可以再次编写代码,但不能保证它不会再次发生......

的确。是什么D:导致它损坏到 Git 存储库无法工作并且操作系统决定修复它的驱动器? Git不是这里的问题。相反,D:驱动器是。


推荐阅读