git stash に「気づかない」「忘れてた」を防ぐためにプロンプトで存在有無がわかるようにしてみた

Git で現在利用しているブランチ名をシェルのプロンプトに表示する記事はよく見かけるので設定してあったけど、git stash したのを忘れたままになっていることがちょくちょくあったので同様に stash されている情報もプロンプトに表示するようにしてみた。

設定方法(zshを利用)

~/.zshrc に下記内容を追記するだけ。

function git-prompt {
    local branch stash

    if  "$PWD" =~ '/\.git(/.*)?$' ; then
        return
    fi

    branch=$(basename "`git symbolic-ref HEAD 2> /dev/null`")
    if  -z $branch ; then
        return
    fi

    stash="`git stash list | awk -F':' '{print $1}' | tr '\n' ',' | sed 's/,$//g'`"
    if  -n $stash ; then
        stash=" %{\e[32m%}($stash)%{\e[00m%}"
    fi

    echo "%{\e[35m%}($branch)$stash%{\e[00m%} "
}

# プロンプトが表示されるたびにプロンプト文字列を再評価
setopt prompt_subst

# プロンプトの設定
PROMPT=$'`git-prompt`%{\e[33m%}%~%{\e[00m%}
%{\e[36m%}%n@%m$%{\e[00m%} '

実際に Git 管理下のディレクトリに cd すると

f:id:harunapple:20120215140655p:plain

こんな感じになる。
なんとなーくでつくってみたけど思ってた以上に便利かも!