提交从 visual studio 到 git 的更改时出现致命错误

Fatal error when committing changes to git from visual studio

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

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

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

我使用 gitbash 控制台来执行代码 当我 运行 像 git --fsck 这样的代码时,它说:

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

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

注意:没有默认引用

缺少树 4b825dc642cb6eb9a060e54bf8d69288fbee4904

因为我对 git 编码一无所知,所以我尝试了一些以前帖子建议的更多东西,但 none 成功了。我的本地仓库在C盘,里面有昨天之前的代码,所以我可以重新写代码,但不能保证不会再发生,所以我愿意接受任何帮助。谢谢

upon opening again it said Fixing errors in D disk

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

It was fixing for like an hour, when it finally ended, nothing changed.

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

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

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

    等消息
  • 删除包含内部树或 blob 对象的文件会产生有关缺少树 and/or blob 对象的消息。

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

My local repository is in C disk and it holds the code before yesterday ...

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

so I could write the code again, but there is no guarantee it wont happen again ...

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