gitのworkspace内がcleanかどうか確認してからコマンドを使いたいことがあった。そこで変更があるかをgitでチェックする方法について調べたのでメモ。
結論としては以下のようにすると良い。
if [ -z "$(git status --porcelain)" ]; then # Working directory clean else # Uncommitted changes fi
perlとかだとこんな感じ。
if (`git status --porcelain`) { warn 'dirty'; } else { warn 'clean'; }
ちなみにgit diff --exit-code
という方法でも行けそうだったので試してみていたのだけど、こちらはファイルの変更は検知できたけど、ファイルの追加(Untracked files)は検知できなかったので、うまくいかなかった。