当我的磁盘在访问 git 存储库时报告了一长串“不可恢复的读取错误”后,我担心我对其他存储库进行了一些推送,这些存储库可能会将错误的内容转发给它们。顺便说一句,在使用提交/推/拉访问存储库时,没有任何 git 命令报告任何错误。但访问存储库后,我总是会收到新条目dmesg
磁盘上存在不可恢复的读取错误。所以肯定有一些文件受到影响,但可能内容是多余的。
我知道:
git fsck --full
将检查回购协议,但我想问:
没有报告任何错误(也许一些悬空提交/斑点在我读到时并不重要)意味着完整的存储库处于有效状态?特别是不仅引用和文件存在,而且所有文件的内容都有效?我找不到的是,有类似校验和的东西可以验证 git 数据库中存储的所有对象的完整内容。
没有报告任何错误(也许一些悬空提交/斑点在我读到时并不重要)意味着完整的存储库处于有效状态?
Yes. git fsck --full
(and --full
是默认值)检查所有对象及其连接。
特别是不仅引用和文件存在,而且
所有文件的内容也都有效吗?我找不到的是
有类似校验和的东西可以验证
git 数据库中存储的所有对象的完整内容。
Git 已经内置了校验和。
Git 中的一切都是对象。每个对象都有一个 ID。 ID 是内容和连接的校验和。如果内容或连接发生变化,则 ID 不再有效。
例如,提交 ID 基本上是...的校验和
- 提交时所有文件(git 称之为“blob”)的内容和权限(它们有自己的 ID)。
- 提交的字段,如作者、日期、日志消息等......
- 父提交的提交 ID。
如果其中任何一个发生变化,ID/校验和将不再有效。这是一个非常优雅的系统。
如果该磁盘仍然出现错误,您确实应该更换该磁盘。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)