What is a Git alias?
If you're unfamiliar with Git's "alias" feature, it provides a way to create shortcuts for other Git commands, which can save you a lot of time. They’re easy to setup and maintain too. Let's see how.
If you're unfamiliar with Git's "alias" feature, it provides a way to create shortcuts for other Git commands, which can save you a lot of time. They’re easy to setup and maintain too.
Using Aliases for Shortcuts
You can create aliases for short commands, like assigning "checkout" to "co":
git config --global alias.co checkout
Or longer commands, like this one that displays a unique log view:
git config --global alias.hist "log --pretty=format:'%h %ad | %s%d [%an]' --graph --date=short"
And what if you’re the sole developer of some project and you’d like to be able to add, commit and push your files in one go?
You can do that too:
git config alias.shove '!git add . && git commit --allow-empty-message -m "" && git push'
I’d recommend that last one only on repos you maintain by yourself, since you’ll want to be more careful on team projects. That’s why I omitted
Alternatively, you could add a
$1 place-holder to force a commit message.
git config --global alias.cshove '!git add . && git commit -m "$1" && git push && :'
(That final colon is a bit of a hack but there’s a reason for it.)
Any aliases you configure are added into your:
.gitconfigfile if you use
- a single repository’s
.git/configfile if you use
--localor just omit the modifier (learn more here)
Here’s what it looks like in the config file itself. You can edit the file manually if you’d like… the
git config alias line I used above is just for convenience.
[alias] co = checkout hist = log --pretty=format:'%h %ad | %s%d [%an]' --graph --date=short shove = !git add . && git commit --allow-empty-message -m \"\" && git push cshove = !git add . && git commit -m \"$1\" && git push && :
Use them like you’d use any other git command, by calling
git shove for instance.
Using Aliases for Typos
There’s another good use for aliases too – to fix common typos.
By default, Git will make helpful suggestions when it catches a typo. If the typo’s not too bad it’ll usually make a single suggestion and, in my experience, it’s nearly always right. Which makes it a little annoying that it can’t just pop that single suggestion onto the prompt so I can execute it!
In reality, it’s not all that safe to just have Git blindly execute its suggestion, but you can do it if you like living dangerously. The number is in tenths of a second, so 30 tells Git to execute the suggestion automatically in 3 seconds. You can increase the number if you want a longer opportunity to cancel the command.
> git config --global help.autocorrect 30 > git pul git: 'pul' is not a git command. See 'git --help'. Did you mean one of these? pull push > git pulll WARNING: You called a Git command named 'pulll', which does not exist. Continuing under the assumption that you meant 'pull' in 3.0 seconds automatically... Already up-to-date.
But wait, there’s more!
What if you have a tendency to type
git pul all the time and don’t want Git providing its top 2 guesses? You can setup aliases for common misspellings, and now you have fuller control over what command runs when.
> git config --global alias.pul pull > git pul Already up-to-date. > git config --global alias.puhs push > git puhs Everything up-to-date
I’m going to add some aliases for useful commands and other common typos in a GitHub repo so I don’t lose them… and maybe you’ll find them useful too!
If you’d like to use them, you don’t have to copy/paste anything. Instead, clone the repository and reference it from within your existing
.gitconfig file, which has the added benefit of leaving your existing aliases and other settings untouched. Add the following section to your
.gitconfig file, where
/your/path is wherever you cloned the repo to.
[include] path = "/your/path/git-alias-template/alias-shortcuts.gitconfig" path = "/your/path/git-alias-template/alias-typos.gitconfig" # etc...
include section imports settings from other files and merges their functionality without affecting the original config file.
You can read more about aliases here:
Do you have any helpful aliases of your own, or any cool Git tips you’d recommend? I’d love to hear about them!
And if you’d like to learn even more cool features of Git, check out the GitHub Cheat Sheet… you’ll need a few, um, hours to check it all out…
(photo by Brett Jordan from Pexels)
Comments / Reactions