0
0

More than 5 years have passed since last update.

gitのcommitの生成可否判断はpre-commitフック以前に行われる

Posted at

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 
#賽の河原的なアレ

だからどうしたという話だが、ちょっと興味深かったのでメモ。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0