🐡

最近switchしたbranchを選択する

2024/04/15に公開2

tl;dr

[alias]
  sww = switch -
  swww = !git reflog | sed -n 's/.*checkout:.* to \\(.*\\)$/\\1/p' | awk '!seen[$0]++' | fzf | xargs git switch

経緯

  • git switch - で直前のbranchに戻るのはよく使う(git swwにしてる)
  • けど、並行して複数branchで作業してると2,3個前に戻りたいってこともある
  • そういうオプションってあるの? ないの? しらべてみました! → よくわかりませんでした
  • reflogから取ればいけるか?
  • !git reflog | sed -n 's/.*checkout:.* to \\(.*\\)$/\\1/p' | awk '!seen[$0]++' | fzf | xargs git switch
  • これをgit swwwに設定して2ヶ月位運用してるけどわりといいかもしれないので書きました

課題

  • 削除済みbranchも出てしまう(そんなに支障は無いが)

Discussion

Yoichi NakayamaYoichi Nakayama

2,3個前に戻りたい

@{-N} のNを2,3とかにしてswitch/checkoutに指定すると行けます。同様にreflogから取ってます。
https://git-scm.com/docs/git-checkout

miyaokamiyaoka

ありがとうございます
やりたかったのは

  • 直近でswitchした順のbranchのリストを出したい(←ここのコマンドが欲しかった)
  • そこからfzfで選びたい

というものなので、直に2個前や3個前など指定するという運用は考えてなかったです(どのブランチだか分かんないので)