Git

gitオブジェクトのSHA-1コード計算

More than 5 years have passed since last update.

gitオブジェクトのSHA-1コードの計算はなかなか合わなかったので調べてみてやっと解明できました。


blobオブジェクト


  1. blob idをblob-id.txtに保存

  2. blobオブジェクトの内容を確認

$cat blob-id.txt | git cat-file --batch 

ce013625030ba8dba906f756967f9e9ca394464a blob 6
hello

3.blobオブジェクトの内容をblob-batch.txtに保存

cat blob-id.txt | git cat-file --batch > blob-batch.txt

4.blob-batch.txtをバイナリーエディタで修正して、blob-obj.txtに保存


  • 先頭のSha-1コードを削除する


  • コンテンツサイズの後の「0A」を「00」に変更


  • 最後の「0A」を削除


5.SHA-1コードを確認


$cat blob-obj.txt | openssl sha1
ce013625030ba8dba906f756967f9e9ca394464a

gitで生成したオブジェクトのSHA-1コードと一致しました。

他のオブジェクトタイプも似たような方法で生成しています。


参考資料

Git objects v2