`git diff --check`のHEAD全体への適用方法とempty treeのハッシュ値 24 views Post @wakairo 5 hours01 Jun, 2026 12:44 +00:00 git diff --checkは、(バイナリファイルを除く)diffの内容にtrailing whitespace等が無いかをチェックできるコマンドです。 チェック対象を通常の差分ではなく、HEADのファイル全体にしたい場合は、以下のように実行します。 git diff --check "$(git hash-object -t tree /dev/null)" HEAD HEADのファイル全体をチェックする仕組みと「empty treeのハッシュ値」 上述のコマンドでは、「何のファイルもないtreeのハッシュ値」とHEADの間でdiffを取ることで、 diffの結果がHEADのファイルの内容全体となり、それがチェックされるようにしています。 では「何のファイルもないtreeのハッシュ値」つまり「empty treeのハッシュ値」をどう求めれば良いかと言いますと、 git hash-object -t tree /dev/nullとなります。 $ git hash-object -t tree /dev/null 4b825dc642cb6eb9a060e54bf8d69288fbee4904 ちなみに「empty treeのハッシュ値」は、上記のように定数値ではあるのですが、 gitで用いるハッシュの計算方法(アルゴリズムなど)が変わればこの定数値も変わりますので、 定数として持たずgit hash-objectに計算させた方が安全です。 Write Preview How to write in Markdown
@wakairo 5 hours01 Jun, 2026 12:44 +00:00 git diff --checkは、(バイナリファイルを除く)diffの内容にtrailing whitespace等が無いかをチェックできるコマンドです。 チェック対象を通常の差分ではなく、HEADのファイル全体にしたい場合は、以下のように実行します。 git diff --check "$(git hash-object -t tree /dev/null)" HEAD HEADのファイル全体をチェックする仕組みと「empty treeのハッシュ値」 上述のコマンドでは、「何のファイルもないtreeのハッシュ値」とHEADの間でdiffを取ることで、 diffの結果がHEADのファイルの内容全体となり、それがチェックされるようにしています。 では「何のファイルもないtreeのハッシュ値」つまり「empty treeのハッシュ値」をどう求めれば良いかと言いますと、 git hash-object -t tree /dev/nullとなります。 $ git hash-object -t tree /dev/null 4b825dc642cb6eb9a060e54bf8d69288fbee4904 ちなみに「empty treeのハッシュ値」は、上記のように定数値ではあるのですが、 gitで用いるハッシュの計算方法(アルゴリズムなど)が変わればこの定数値も変わりますので、 定数として持たずgit hash-objectに計算させた方が安全です。
git diff --checkは、(バイナリファイルを除く)diffの内容にtrailing whitespace等が無いかをチェックできるコマンドです。チェック対象を通常の差分ではなく、HEADのファイル全体にしたい場合は、以下のように実行します。
HEADのファイル全体をチェックする仕組みと「empty treeのハッシュ値」
上述のコマンドでは、「何のファイルもないtreeのハッシュ値」とHEADの間でdiffを取ることで、 diffの結果がHEADのファイルの内容全体となり、それがチェックされるようにしています。
では「何のファイルもないtreeのハッシュ値」つまり「empty treeのハッシュ値」をどう求めれば良いかと言いますと、
git hash-object -t tree /dev/nullとなります。ちなみに「empty treeのハッシュ値」は、上記のように定数値ではあるのですが、 gitで用いるハッシュの計算方法(アルゴリズムなど)が変わればこの定数値も変わりますので、 定数として持たず
git hash-objectに計算させた方が安全です。