Closed1

git diff がある場合もしくは untracked なファイルがある場合にエラーの終了コードを返すコマンド

ChanmoroChanmoro

やりたいこと

何らかのコマンドで自動生成されたコードを git へコミットし忘れていないかを CI でチェックしたい
そのために CI 上で自動生成コマンドを実行したあとで、git の差分があればエラーの終了コードを返してくれるコマンドがほしい

解決策

このコマンドで git diff で差分がある場合と untracked なファイルがある場合に終了コード 1 でエラーとすることができる

$ test -z "$(git status -s)"

[[ ]] を使った書き方でも同様の結果が得られる

$ [[ -z $(git status -s) ]]

メモ

  • git diff --exit-code で git diff がある場合にエラーにすることができるが、git 管理されていない untracked なファイルがある場合にはエラーにならない
  • untracked なファイルがあるかは git status で確認する必要がある
  • untracked なファイルがある場合にも対応したこのコマンドはこちらのブログで解説されていた
このスクラップは2021/02/24にクローズされました