gpt4 book ai didi

git - 检查 git 仓库的完整性

转载 作者:太空狗 更新时间:2023-10-29 14:42:38 24 4
gpt4 key购买 nike

在访问 git 存储库时我有一个磁盘报告了一长串“不可恢复的读取错误”后,我担心我对其他存储库进行了一些推送,这可能会向它们转发错误的内容。顺便说一句,在使用提交/推/pull 访问存储库时,没有任何 git 命令确实报告了任何错误。但是在访问 repo 之后,我总是在 dmesg 中得到新的条目,并且在磁盘上出现不可恢复的读取错误。所以肯定有一些文件受到影响,但可能内容是多余的。

我知道:

git fsck --full 

将检查 repo,但我想问:

没有报告任何错误(也许一些悬而未决的提交/blob 在我读到的时候并不重要)是否意味着完整的 repo 处于有效状态?特别是不仅引用和文件存在,而且所有文件的内容都有效?我找不到的是有类似校验和的东西可以验证存储在 git 数据库中的所有对象的完整内容。

最佳答案

Did not reporting any errors ( maybe some dangling commits/blobs are not critical as I read ) mean that the complete repo is in valid state?

是的。 git fsck --full(--full 是默认值)检查所有对象及其连接。

Especially that not only that references and files are existing, but also the content of all files are valid? What I can't find is that there is something like a checksum to make it possible to verify the full content of all the objects stored in the git database.

Git 内置了校验和。

Git 中的一切都是对象。每个对象都有一个 ID。 ID 是内容和连接的校验和。如果内容或连接发生变化,则 ID 不再有效。

例如,提交 ID 基本上是...的校验和

  • 提交时所有文件(git 称它们为“blob”)的内容和权限(它们有自己的 ID)。
  • 提交的字段,如作者、日期、日志消息等...
  • 父提交的提交 ID。

如果其中任何一个发生变化,ID/校验和将不再有效。这是一个非常优雅的系统。

如果那个磁盘仍然给你错误,你真的应该更换那个磁盘。

关于git - 检查 git 仓库的完整性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49075782/

24 4 0
文章推荐: javascript - 添加一个事件以在将列表项添加到