$shibayu36->blog;

株式会社はてなでエンジニアをしています。プログラミングや読書のことなどについて書いています。

gitのworkspaceがcleanかどうかチェックする

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)は検知できなかったので、うまくいかなかった。