gitは通常、変更がaddされていない場合はコミットを作成しない(--allow-empty
が必要)。
しかし、pre-commit
フックで何らかの操作を実行し、結果として差分が消失した場合でもコミットは作成される。
pre-commit
#!/bin/sh
git diff --cached | 対象ファイルに対してなんか色々処理 | 最後に再度addする
例えば上のようなフックで「色々処理」の結果、addしたファイルの変更が元に戻ったとする。この時でもコミットは作成される。git diff HEAD~..HEAD
には何も表示されない。
更に極端なことを言えば、フック内でファイルを全てreset(アンステージ)してもコミットは作成される。
pre-commit
#!/bin/sh
git reset
#賽の河原的なアレ
だからどうしたという話だが、ちょっと興味深かったのでメモ。