Gitを使った開発をしていると、特定のコミットにcheckoutすることが一日に何回もあると思います。
ブランチやタグの割り当てられていないコミットの場合、以下のような手順でコミットIDを指定する必要があり、面倒です。
-
git logでツリーを表示する - ckeckoutするコミットのコミットIDをコピーする
- コミット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 logとfzfのオプションはお好みで変更してください。
上の実装だと以下のようになります。
参考にした記事
今回の実装は参考記事様でのfbrとfshowをおおいに参考にしています。
