As a dev, Git is just one of those things you'll interact with daily. But I'm sure you've all been there, where you can't remember those commands or it just gets a bit monotonous typing in the same long commands over and over again.
Well, this is where Git aliases can come in handy.
A git alias is a shorthand version of a command / custom command defined by yourself, which then in turn runs the real command. This make remembering those git commands less important, and I can guarantee it will make your day to day development a lot easier, and more efficient.
This is quite simple. There are a couple of ways, but for me the easiest is simply to open up your terminal and enter the following command to edit your global Git config. Not only is this easier because you're able to add them in your editor of choice, but it also means that you have more space to view all your aliases.
You **can **add them via the terminal directly but I feel the syntax / view can be cumbersome (especially with more complex aliases).
How you'd do it in the terminal:
git config --global alias.co checkout
But this tutorial is going to show you how to do it via my preferred way, via the Git config and editor.
git config --global --e
This will open up your git config.
Once you have your editor open you can add an alias with the following code (you may see an alias section already there).
[alias] co = checkout
This is just an example, but this will create an alias of
co which in turn will be like running
You can add your branch name in just the same way, like so:
git co feature/making-aliases
tidy-up = !git branch | grep -v "main" | xargs git branch -D
This is one of my favs, although I don't use it very regularly (I should though). How this works is simple, it will run
git branch which will return the list of local branches. It will then utilise the pipe mechanic (which in simplest terms will pass the result to the next command).
So we pass the branches to
grep -v "main" which will search the branch names, but the
-v will exclude the branch
It then passes these to the next command (xargs coverts input to a command argument) to the
git branch -D, (the delete branch command).
s = status
Get the status of your current branch, it lets you see which changes have been staged, which haven't, and which files aren't being tracked by Git.
latest = !git checkout main && git pull
This alias is very handy when u want to make sure your main branch is up to date before branching off, or if you need to check a bug on the main branch.
git latest and then bam! you have the latest main code.
co = checkout
This is just a quicker, nicer way of checking out a branch.
git co <branchName> ie.
git co bug/defect101
Following on from git checkout, this goes a little further to create a new branch from the current branch
cob = checkout -b
git cob feature/new-feature
I created this alias 'cos I was tired of having to go get main, git pull, and then branch off of the latest main.
new-work = !git checkout main && git pull && git checkout
This will pull the latest code of the main branch, and create a new branch with the given name.
git new-work bug/fix-issue
Isn't that a lot quicker / easier?
br = branch --format='%(HEAD) %(color:yellow)%(refname:short)%(color:reset) - %(contents:subject) %(color:green)(%(committerdate:relative)) [%(authorname)]' --sort=-committerdate
Let's take a look at what this is doing.. this will
List all branches,
Branch name first
name of last commit
then how many days since the last commit & author name in green text
Ordering the list by most recently committed.
This is another time-saver, where you just want to get everything you've worked on committed, tracked and untracked.
save = !git add -A && git commit
This simply stages all the untracked and tracked changes. Then commits the changes without a message, which will cause your chosen git editor to open, allowing you to add a commit message + optional description.
You could also add another variation of this with:
saveM = !git add -A && git commit -m
This is just like the
git save but requires you to provide a commit message.
Ever been in that situation where you've gone to push your code and you get the prompt there's no remote branch and you see a message saying to use the command
git push --set-upstream origin <branchName>
Well, you can bypass this using the following git alias:
done = !git push -u origin HEAD
This will push the current branch with the branch name to the origin (remote server).
so by the end, your git config could look something like this:
[alias] co = checkout cob = checkout -b s = status tidy-up = !git branch | grep -v "main" | xargs git branch -D latest = !git checkout main && git pull new-work = !git checkout main && git pull && git checkout done = !git push -u origin HEAD save = !git add -A && git commit saveM = !git add -A && git commit -m br = branch --format='%(HEAD) %(color:yellow)%(refname:short)%(color:reset) - %(contents:subject) %(color:green)(%(committerdate:relative)) [%(authorname)]' --sort=-committerdate
&& - This simply chains commands together, but the right side command will only run if the left side doesn't occur any errors.
| - This will pass the output of the previous command to the right-side command.
Why do some of the alias have
! in front of them and others do not?
Well, adding an exclamation mark (!) at the beginning is letting the terminal know that it's running a full shell command, not a git subcommand such as (checkout, status etc). Ones that don't have the exclamation mark are a "sub-command" (pre-existing) of git.
The alias is replaced by its definition following the git command. Anything after the alias on the command line comes after the definition
I hope this was helpful, and you've learnt something from it all -- go forth and Git it done :-) -- always if you want to chat, or discuss drop feedback in the comments, or follow me on twitter.