Linux
Git

溜まりに溜まったgit stashを一掃する

私のようなズボラな人へ。

こんな場合に使えます

こまごまとブランチを切り替える度にgit stash

戻って来たらgit stash apply
git stash popと違い、stashに残り続けます)
(だって、念のためとっておいたら、どこかで役に立つかもしれないし・・・)
(↑完全に片付け苦手な人の心理)

そのままstashが残り続ける

で、いつのまにか100以上のstashが\(^o^)/

ワンライナーで一掃

とりあえず、完了してるブランチ分だけでもまとめて消しちゃいましょう。

git stash list | grep 'WIP on ブランチ名' 2>/dev/null | awk '{print $1}' | sed -e 's/://' | sort -r | xargs -I {} git stash drop {}

git stash listから指定したブランチのstashを抜き出してstash dropで捨てています。
sort -rで降順にしてあげないと、dropの度に番号が繰り上がるのでおかしなことになります。
(やっちまった!)

うっかりするとマージコミットされた他のブランチstashも抽出されちゃうので、
ちゃんとしたい人はもう少し作りこんだ方が良いでしょう。
Commitメッセージに「WIP on」が入っていない限りは大丈夫なはず。