At work I'm often jumping back and forth between various branches and pull requests and I sometimes find myself struggling to remember the name of a recent branch I need to use.
For years I've used git reflog
as a short-cut to look at my git history and identify my recent work. It works okay, but it's very hard to make sense of:
Other times I try to use git branch
, but that doesn't give you much context about anything and of course it can be easy to drown in the large number of branches:
~/d/n/webapp (typescript ✔) git branch
add-cognito-auth
doritos
eslint-prettier
main
* typescript
updated-husky
Recently I got frustrated by this and decided to find a solution and stumbled on this stackoverflow question, How can I get a list of git branches ordered by most recent commit?, which taught me two really useful techniques.
-
You can sort branches by commit date using
git branch --sort=-committerdate
which is great in an of itself (watch out for the-
aftersort=
which puts the most recent branches first) -
You can enhance this output a bit using this wild syntax
git branch --sort=-committerdate --format='%(HEAD)%(color:yellow)%(refname:short) | %(color:bold green)%(committerdate:relative) | %(color:blue)%(subject)%(color:reset)' --color=always
which I'm never going to remember.
Which led me to create my first git alias after over 12 years of using it. Here's how I did it and here's what it looks like:
git config --global alias.branches "branch --sort=-committerdate --format='%(HEAD)%(color:yellow)%(refname:short) | %(color:bold green)%(committerdate:relative) | %(color:blue)%(subject)%(color:reset)' --color=always"
That command added this to the boottom of my ~/.gitconfig
file:
[alias]
branches = branch --sort=-committerdate --format='%(HEAD)%(color:yellow)
%(refname:short) | %(color:bold green)%(committerdate:relative) | %(color:blue)%(subject)%(color:reset)' --color=always
Now when I type git branches
I see this lovely output:
Git isn't always the easiest to use, but this alias has made it just a little bit better, for me anyway. What kind of aliases do you use?
Top comments (5)
Looks pretty good, I will add it to my .gitconfig
I have several for repetitive small commands, for example, I have one to avoid type git push origin branchName, I just type git ps, and the same for pull with git pl
Another one to fetch origin and prune, git fp.
I liked yours, thanks
This does look like a good one. I also have one alias which I created somewhat on the recent side.
git commit --fixup -> git fixup
It is a small change but it is nice.
Sometimes I just wanna reset everything and start fresh
Nice! I'm pretty sure I'll be using this with some frequency.
Great and useful trick! Question, can I change the color with hex value?