EDIT: A friend of mine suggested an improvement to the below:
[alias] recent = !git checkout $(git branch --sort=-committerdate | fzf)
which also has the added benefit of highlighting the current branch with a
master * branch-1 branch-2
A trick I use a lot — a way to view and switch between recently-used branches:
Let’s see how it works.
for-each-ref, we can get a list of all Git refs:
This returns everything, including remote refs and tags. I only want to see those refs that correspond to local branches, so filter them:
git for-each-ref refs/heads/
and sort them by latest commit timestamp:
git for-each-ref refs/heads/ --sort=-committerdate
and shorten the output so it’s just displaying the ref name:
git for-each-ref refs/heads/ --sort=-committerdate --format="%(refname:short)"
To make it nicer, combine it with
fzf, the combination of which is shown below as a snippet from my
[alias] list-recent = "!sh -c 'git for-each-ref refs/heads/ --sort=-committerdate \ --format=\"%(refname:short)\"'" recent = "!sh -c 'git checkout $(git list-recent | fzf -m)'"