どのブランチで最後に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
らしいです。)