Last active
August 9, 2025 10:35
-
-
Save junegunn/f4fca918e937e6bf5bad to your computer and use it in GitHub Desktop.
Browsing git commit history with fzf
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# fshow - git commit browser (enter for show, ctrl-d for diff, ` toggles sort) | |
fshow() { | |
local out shas sha q k | |
while out=$( | |
git log --graph --color=always \ | |
--format="%C(auto)%h%d %s %C(black)%C(bold)%cr" "$@" | | |
fzf --ansi --multi --no-sort --reverse --query="$q" \ | |
--print-query --expect=ctrl-d --toggle-sort=\`); do | |
q=$(head -1 <<< "$out") | |
k=$(head -2 <<< "$out" | tail -1) | |
shas=$(sed '1,2d;s/^[^a-z0-9]*//;/^$/d' <<< "$out" | awk '{print $1}') | |
[ -z "$shas" ] && continue | |
if [ "$k" = ctrl-d ]; then | |
git diff --color=always $shas | less -R | |
else | |
for sha in $shas; do | |
git show --color=always $sha | less -R | |
done | |
fi | |
done | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Using this as an inspiration I've created a script to make the
git commit --fixup ...
workflow easier: https://gitlab.com/-/snippets/4875863