在我访问git repo时,我有一个报告了一长串“不可恢复的读取错误”的磁盘后,我担心我会对其他可能转发错误内容的其他回购进行推送。 BTW非git命令在使用commit / push / pull访问repo时报告了任何错误。但是在访问了repo之后,我总是在dmesg
中新出现了磁盘上不可恢复的读取错误。因此必须有一些文件受影响,但可能内容是多余的。
我知道:
git fsck --full
将检查回购,但我想问:
没有报告任何错误(可能有些悬空提交/ blob在我阅读时并不重要)意味着完整的回购是否处于有效状态?特别是不仅引用和文件存在,而且所有文件的内容都有效?我找不到的是,有一些类似校验和的东西可以验证存储在git数据库中的所有对象的完整内容。
没有报告任何错误(可能有些悬空提交/ blob在我阅读时并不重要)意味着完整的回购是否处于有效状态?
是。 git fsck --full
(和--full
是默认值)检查所有对象及其连接。
特别是不仅引用和文件存在,而且所有文件的内容都有效?我找不到的是,有一些类似校验和的东西可以验证存储在git数据库中的所有对象的完整内容。
Git已经将校验和放入其中。
Git中的所有东西都是一个对象。每个对象都有一个ID。 ID是内容和连接的校验和。如果内容或连接发生更改,则ID不再有效。
例如,提交ID基本上是...的校验和
如果其中任何一项发生变化,则ID /校验和不再有效。这是一个非常优雅的系统。
如果该磁盘仍然给你错误,你真的应该替换那个磁盘。