どのブランチで最後にgit stashをしたかわからなくなることがあるので、シェルに表示されるようにしてみました。
これで誤popがだいぶ減りました。
How To
stashされた一覧はgit stash listで確認できます。
% git stash list
stash@{0}: WIP on feature/introduce-flux: 6ef95e4 Add flux classes
stash@{1}: WIP on feature/remake-view-models: 72482b5 Add ViewModelType
stash@{2}: WIP on feature/enable-auto-layout-for-color-selector: 31b69e9 Enable auto layout for color selector
このような感じで、ブランチ名も出ます。
これを元にして、現在のブランチと一致するものがあった場合に、最新のものをシェルに表示するようにします。
現在のブランチ名の取得
git rev-parseで取ってきます。
BRANCH="`git rev-parse --abbrev-ref HEAD 2>/dev/null`"
stashされているかの確認
先頭のを取って来てawkでstash@{0}のようなインデックスだけ取ってきます。
STASHED="`git stash list | grep $BRANCH | head -1 | awk -F: '{print $1}'`"
git stash saveなどを活用してる人は、awkでメッセージまで抜き出すとハッピーかもしれません。
全体像
zshユーザーなのでRPROMPTにくっつけます。
BRANCH="`git rev-parse --abbrev-ref HEAD 2>/dev/null`" if [ "$BRANCH" ]; then STASHED="`git stash list | grep $BRANCH | head -1 | awk -F: '{print $1}'`" if [ "$STASHED" a]; then RPROMPT=$STASHED@$RPROMPT fi fi
するとこんな感じです。

自分の.zshrcは変なとこに書いてしまっているのでいつか直したいです。いつか。
(そういえばmacはCatalinaからzshらしいです。)