Git aliases that make my life easier
Before thinking about aliases the best thing you can do to make git nicer to use is configure tab completion. If you’re using Homebrew follow their shell completion docs otherwise you’re on your own – but do it! The great thing about git aliases is that they’re also tab completable.
Here are the git aliases I use all the time, add them to your
[alias] browse = !gh browse co = checkout recent = branch --sort=-committerdate st = status touch = commit --amend --date=now --no-edit
First of all
git co and
git st are a throwback to my SVN transition days but they really should come as default – on unfamiliar systems I can’t believe how much of an impediment it is having to type the whole of
git status each time.
I’ve only just switched from
hub (which seems to be very nearly deprecated) to GitHub’s “official” command line tool. Hub’s
browse command was pretty much the only thing I used and although
gh also comes with its own
browse command my muscle memory is just too ingrained to be able to switch. Fortunately adding a preceding
! will execute the alias as an external shell command so now I can type
git browse and it will run
gh browse for me. It’s not me it’s you.
Focus and deep work are an imperative to achieving quality and continual progress but sometimes reality hits and you find yourself working across many branches at the same time. Now what was the name of that branch I was working on the other day 🤔 This is an example of a feature that’s already part of git but only if you know the magic incantation – it’s
git branch --sort=-committerdate or
git recent with this alias.
git touch more than I should admit but something in me needs the commit’s date to represent the real date I finished the commit (even though squash and merge will have its way eventually). FYI you can pass any date and use
--amend for evil 😈 “Yes I really was working late last night”
git commit --amend --date=2023-01-23T23:34:51 --no-edit 😴
One more bonus alias that’s useful but I rarely use:
[alias] graph = log --oneline --graph
This is less of a graph nowadays when everything’s squashed and merged 😞 but I find being able to visually navigate the git tree really useful. Again this is already a part of git if you can remember where to find it but with an alias it’s a single tab-completable command away. The nice thing with all of these is that you can pass further options and they’re appended to the alias, so with this you can include all local branches with
git graph --all or all remote branches with
git graph --remotes (again tab completion came to my rescue – even through the alias – because I didn’t remember if it was