1. ホーム
  2. git

[解決済み] git はどのようにファイルのハッシュを計算するのですか?

2022-06-09 13:05:20

質問

ツリーオブジェクトに格納されている SHA1 ハッシュ (by git ls-tree によって返される) ファイルの内容の SHA1 ハッシュと一致しません。 sha1sum )

$ git cat-file blob 4716ca912495c805b94a88ef6dc3fb4aff46bf3c | sha1sum
de20247992af0f949ae8df4fa9a37e4a03d7063e  -

git はどのようにファイルのハッシュを計算するのですか?ハッシュを計算する前に内容を圧縮しているのでしょうか?

どのように解決するのですか?

<ブロッククオート

Gitはオブジェクトのプレフィックスとして"blob "をつけ、その後に長さ(人間が読める整数値)を続けます。 長さ (人間が読める整数)、NUL 文字が続きます。

$ echo -e 'blob 14\0Hello, World!' | shasum 8ab686eafeb1f44702738c8b0f24f2567c36da6d

出典 http://alblue.bandlem.com/2011/08/git-tip-of-week-objects.html