🔍
git logをfzfに流してcommitのshaをさっと選びたい
たまに遭遇するあのcommitのshaが欲しいとき用の便利fzf。ついでにpreviewも見れる。
zsh環境想定。
select_commit_from_git_log() {
git log -n1000 --graph --color=always --format="%C(auto)%h%d %s %C(black)%C(bold)%cr" "$@" |\
fzf -m --ansi --no-sort --reverse --tiebreak=index --preview 'f() {
set -- $(echo "$@" | grep -o "[a-f0-9]\{7\}" | head -1);
if [ $1 ]; then
git show --color $1
else
echo "blank"
fi
}; f {}' |\
grep -o "[a-f0-9]\{7\}" |
tr '\n' ' '
}
function insert_selected_git_logs(){
LBUFFER+=$(select_commit_from_git_log)
CURSOR=$#LBUFFER
zle reset-prompt
}
zle -N insert_selected_git_logs
bindkey "^gl" insert_selected_git_logs
cherry-pick用途なら--all
を付けてもいいかもしれない。
参考
Discussion