git-1.7.4.1 を使用して、オブジェクト データベースの破損がユーザーにどれだけ早く警告されるかを判断しようとして、1 ビットの切り替えを行いました。
$ git init リポジトリ /tmp/repo/.git/ で空の Git リポジトリを初期化しました $ cd リポジトリ $ echo '非常に重要な情報' >critical $ git add クリティカル $ git commit -m クリティカル [マスター (ルートコミット) c4d6d90] 重要 1 ファイル変更、1 挿入 (+)、0 削除 (-) 作成モード 100644 クリティカル $ git ls-tree HEAD 100644 ブロブ 82d423c32c4bb2c52938088e0234db041bf4eaaf クリティカル $ git show 82d423c32c4bb2c52938088e0234db041bf4eaaf 非常に重要な情報 $ echo '非常に重要な情報' | git ハッシュ オブジェクト --stdin -w 81a3797afe76d339db25c0f9c705a6caa47279c2 $ mv .git/objects/81/a3797afe76d339db25c0f9c705a6caa47279c2 \ .git/オブジェクト/82/d423c32c4bb2c52938088e0234db041bf4eaaf
git-fsck
告知はもちろん
$ git fsck エラー: sha1 の不一致 82d423c32c4bb2c52938088e0234db041bf4eaaf エラー: 82d423c32c4bb2c52938088e0234db041bf4eaaf: オブジェクトが破損しているか見つからない 欠落しているブロブ 82d423c32c4bb2c52938088e0234db041bf4eaaf
しかしgit-log
、変化に満足しています
$ git ログ -p コミット c4d6d90467af9ffa94772795d5c5d191228933c1 著者: グレッグ・ベーコン <gbacon@dbresearch.net> 日付: 2011 年 4 月 7 日木曜日 12:20:53 -0500 致命的 diff --git a/クリティカル b/クリティカル 新しいファイル モード 100644 インデックス 0000000..82d423c --- /dev/null +++ b/クリティカル @@ -0,0 +1 @@ +非常に重要な情報
そのままgit-checkout
。
$ rm クリティカル $ git チェックアウト . $ 猫クリティカル 非常に重要な情報
の特定の呼び出しによりgit-show
、破損が明らかになります
$ git show 82d423c32c4bb2c52938088e0234db041bf4eaaf エラー: sha1 の不一致 82d423c32c4bb2c52938088e0234db041bf4eaaf 致命的: 不良オブジェクト 82d423c32c4bb2c52938088e0234db041bf4eaaf
しかし、より広いものではありません。
$ git ショー コミット c4d6d90467af9ffa94772795d5c5d191228933c1 著者: グレッグ・ベーコン <gbacon@dbresearch.net> 日付: 2011 年 4 月 7 日木曜日 12:20:53 -0500 致命的 diff --git a/クリティカル b/クリティカル 新しいファイル モード 100644 インデックス 0000000..82d423c --- /dev/null +++ b/クリティカル @@ -0,0 +1 @@ +非常に重要な情報
さえgit-clone
気付かない!
$ CD .. $ git clone レポクローン クローンにクローンしています... 終わり。 $ 猫のクローン/クリティカル 非常に重要な情報
整合性チェックを実行する特定の git コマンド モード (たとえば、git show $sha1
存在する必要があるが、git show
または存在しない) の完全なリストは何ですか?git show HEAD