ひびのログ

日々ではないけどログを出力していくブログ

Git のチェックアウト履歴を確認する&そこから選択してチェックアウト

履歴がー……見たい!

Git で直前にいたブランチに戻るのは git checkout - で出来ますが、それ以前って見ることが出来ないですよね。

でも、見たい。

そこでシェル芸ですよ

シェル芸の定義以下略。

ほぼ参考 URL からのパクリですが、Mac で動かなかったりしたので変えました。

git reflog \
  | grep -E '^.* +.* +checkout: +' \
  | grep 'moving from' \
  | awk '{ print $8 }' \
  | uniq

そこからチェックアウトしたい

みんな大好き peco で選択してチェックアウトするようにしました。

git checkout "$(
  git reflog \
    | grep -E '^.* +.* +checkout: +' \
    | grep 'moving from' \
    | awk '{ print $8 }' \
    | uniq \
    | peco
)" 

エイリアスに突っ込んでおくと便利だと思います。

[alias]
  checkout-in-checkout-history = !git checkout "$(git reflog | grep -E '^.* +.* +checkout: +' | grep 'moving from' | awk '{ print $8 }' | uniq | peco)" 

参考

qiita.com