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