🕹
fzf で git log を見ながらブランチ移動する
つくったもの
このように、各ブランチの git log
を見ながらブランチ移動が出来ます。
fzf とは
コマンド履歴やファイル名などをインタラクティブに絞り込むことが出来ます。
また、プレビュー機能を使うことで、行ごとのプレビューを表示することも可能です。
# {} は選択された行の文字列に置き換えられます。
fzf --preview 'cat {}'
完成形
このプレビュー機能を駆使すると上記のようなブランチ移動が可能になります。
※ 私は普段 zsh を使っているので zsh 用の設定になります。
.zshrc
function select-git-switch() {
target_br=$(
git branch -a |
fzf --exit-0 --layout=reverse --info=hidden --no-multi --preview-window="right,65%" --prompt="CHECKOUT BRANCH > " --preview="echo {} | tr -d ' *' | xargs git lgn --color=always" |
head -n 1 |
perl -pe "s/\s//g; s/\*//g; s/remotes\/origin\///g"
)
if [ -n "$target_br" ]; then
BUFFER="git switch $target_br"
zle accept-line
fi
}
zle -N select-git-switch
bindkey "^g" select-git-switch # 「control + G」で実行
.gitconfig
# プレビューで表示される見た目の設定です。好みに合わせて設定してください。
[alias]
lg = log --graph --decorate --abbrev-commit --format=format:'%C(blue)%h%C(reset) - %C(green)(%ar)%C(reset)%C(yellow)%d%C(reset)\n %C(white)%s%C(reset) %C(dim white)- %an%C(reset)'
さいごに
fzf は色々なコマンドと組み合わせられてとても便利なので是非皆さんも使ってみて下さい!
Discussion