diff --git a/git-browse b/git-browse new file mode 100755 index 0000000..30d6bff --- /dev/null +++ b/git-browse @@ -0,0 +1,30 @@ + +#!/bin/bash + +# git recent but with a FZF preview of the branch diff. + +branches_format="%(color:yellow)%(refname:short)%(color:reset)" +commits_format="%C(red bold)%h %C(bold blue)%an %C(bold green)%ad %Creset%s" + +# This relies on my own git aliases. see .gitconfig +stat_cmd="git diff --color=always --stat origin/$(git mainormaster)...{}" +diffcommits_cmd="git log --date=human --color=always --format='$commits_format' --no-merges origin/$(git mainormaster)..{1}" +diffbranch_cmd="git diffbranch-that {} | delta" + +# fzf basic inspiration: +# - https://github.com/junegunn/fzf/wiki/Examples#git, https://github.com/junegunn/fzf/wiki/Examples-(fish)#git +# Hardcore inspiration: +# - https://github.com/junegunn/fzf-git.sh + +git for-each-ref --color=always --sort=-committerdate "refs/heads/" --format="$branches_format" \ + | fzf-tmux --ansi -p80%,60% -- \ + --layout=reverse --multi --height=90% --min-height=20 \ + --border-label-pos=2 --border-label '🌲 Branches' --border \ + --no-hscroll --no-multi \ + --preview-window='right,80%,border-left,border-rounded' --preview="$diffcommits_cmd" --preview-label="Commits unique to branch" \ + --header $'CTRL-O (show branch diff)\n\n' \ + --bind "ctrl-o:execute:$diffbranch_cmd" + +# Checkout the selected item +# git checkout (echo $target | awk '{print $2}') + \ No newline at end of file