LoginSignup
0
0

More than 1 year has passed since last update.

fzfを使ってgit checkout commit-idをスムーズに行う

Posted at

Gitを使った開発をしていると、特定のコミットにcheckoutすることが一日に何回もあると思います。
ブランチやタグの割り当てられていないコミットの場合、以下のような手順でコミットIDを指定する必要があり、面倒です。

  1. git logでツリーを表示する
  2. ckeckoutするコミットのコミットIDをコピーする
  3. コミットIDをペーストしてcheckoutする

そこで、上の一連の流れをスムーズに行うシェル関数を、fzfを使用して実装してみました。

前提

fzfがインストールされていることを前提とします。
fzfそのもの及びインストール方法については本家をご参照ください。

実装

# fco - checkout git commit
fco() {
  local commit
  commit=$(git log --graph --color=always --remotes --branches \
               --format="%C(auto)%h%d %s %C(white)%C(bold)%cr" "$@" |
           fzf --ansi --no-sort --reverse --tiebreak=index --bind=ctrl-s:toggle-sort |
           grep -o '[a-f0-9]\{7\}') &&
           git checkout $commit
}

関数名やgit logfzfのオプションはお好みで変更してください。

上の実装だと以下のようになります。

fck.gif

参考にした記事

今回の実装は参考記事様でのfbrfshowをおおいに参考にしています。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0