试图确定用户在使用 git-1.7.4.1 的对象数据库中被警告的速度有多快,我拉了一个一位 switcheroo:
$ git init 存储库 在 /tmp/repo/.git/ 中初始化空的 Git 存储库 $ cd 回购 $ echo '非常重要的信息' >关键 $ git 添加关键 $ git commit -m 关键 [master (root-commit) c4d6d90] 关键 1 个文件已更改,1 个插入(+),0 个删除(-) 创建模式 100644 关键 $ git ls-tree 头 100644 blob 82d423c32c4bb2c52938088e0234db041bf4eaaf 严重 $ git show 82d423c32c4bb2c52938088e0234db041bf4eaaf 非常重要的信息 $ echo '非常重要的信息' | git hash-object --stdin -w 81a3797afe76d339db25c0f9c705a6caa47279c2 $ mv .git/objects/81/a3797afe76d339db25c0f9c705a6caa47279c2 \ .git/objects/82/d423c32c4bb2c52938088e0234db041bf4eaaf
当然,git-fsck
通知
$ git fsck 错误:sha1 不匹配 82d423c32c4bb2c52938088e0234db041bf4eaaf 错误:82d423c32c4bb2c52938088e0234db041bf4eaaf:对象损坏或丢失 缺少 blob 82d423c32c4bb2c52938088e0234db041bf4eaaf
但git-log
对改变感到满意
$ 混帐日志 -p 提交 c4d6d90467af9ffa94772795d5c5d191228933c1 作者:格雷格·培根 <gbacon@dbresearch.net> 日期:2011 年 4 月 7 日星期四 12:20:53 -0500 批判的 差异 --git a/关键 b/关键 新文件模式 100644 索引 0000000..82d423c --- /dev/null +++ b/关键 @@ -0,0 +1 @@ +非常重要的信息
原样git-checkout
。
$ rm 关键 $ 混帐结帐。 $ cat 关键 非常重要的信息
一个特定的调用git-show
揭示了腐败
$ git show 82d423c32c4bb2c52938088e0234db041bf4eaaf 错误:sha1 不匹配 82d423c32c4bb2c52938088e0234db041bf4eaaf 致命:坏对象 82d423c32c4bb2c52938088e0234db041bf4eaaf
但不是更广泛的。
$ git 显示 提交 c4d6d90467af9ffa94772795d5c5d191228933c1 作者:格雷格·培根 <gbacon@dbresearch.net> 日期:2011 年 4 月 7 日星期四 12:20:53 -0500 批判的 差异 --git a/关键 b/关键 新文件模式 100644 索引 0000000..82d423c --- /dev/null +++ b/关键 @@ -0,0 +1 @@ +非常重要的信息
甚至git-clone
没有注意到!
$ 光盘 .. $ git clone 回购克隆 克隆到克隆... 完毕。 $ 猫克隆/关键 非常重要的信息
执行完整性检查的特定 git 命令模式(例如,git show $sha1
应该存在但不存在git show
)的完整列表是什么?git show HEAD