1. ホーム
  2. git

[解決済み] Git プレコミットフック:変更・追加されたファイル

2023-06-12 20:16:09

質問

pre-commit フックを書いています。私は php -l を実行したいです。しかし、私は行き詰っています。

ステージングされた新規/変更ファイルのリストを取得する必要があります。削除されたファイルは除外する必要があります。

私は git diffgit ls-files といった具合ですが、ここで手を貸してほしいのです。

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

git diff --cached --name-status を使うと、ステージングされたものの概要が表示されるので、削除されたファイルを簡単に除外することができる、など。

M       wt-status.c
D       wt-status.h

これは、ステージングエリア(index)において、wt-status.cが変更され、wt-status.hが削除されたことを示します。そこで、削除されていないファイルだけをチェックするために

steve@arise:~/src/git <master>$ git diff --cached --name-status | awk '$1 != "D" { print $2 }'
wt-status.c
wt-status.h

ただし、空白を含むファイル名を扱うには、特別な手順を踏まなければなりません (git diff の -z オプションと、より興味深い解析があります)。