You can create Git aliases to automate frequently used Git commands and sequences of commands. In effect, you can create your own Git commands.
Adding an alias
You can add aliases directly from the command line, but I find it easier to add them to the
.gitconfig file so that I can tweak them more readily.
(Note: These instructions work on both Mac and Linux.)
Use a text editor to open the
.gitconfigfile located in your Home directory.
Add a section to the file called
Add an alias definition to the new
[alias]section using the following format:
<alias-name> = !git <git-commands or already-defined-alias or cli-commands>
For example, the following alias will return a list of the most recent 15 commits, nicely formatted with the short version of the hash, the user name, a time stamp, and the commit message:
lg15 = !git log -15 --pretty=format:"'%h - %an, %ar : %s'" && git status
You can also use a variable in the alias definition to add more flexibility to your command:
lg = !git log -$1 --pretty=format:"'%h - %an, %ar : %s'" && git status
In this example, using a variable (
$1) enables you to specify on the command line the number of commits you want to list after the
git lgcommand: for example,
git lg 10lists the 10 most recent commits.
In a terminal window, change directories to your Git repo.
Run the alias from the command line:
git <alias-name>Or if your alias uses variables:
git <alias-name> <variable-text>
Sample alias definition
I’ve included some sample aliases below that you can copy/paste as text directly into your
.gitconfig file. The comments above each alias definition provide descriptions, and usage instructions.
Adds any currently unstaged changes to the last commit you made. Good for situations where you just saved a minor tweak to a file and don't want to do an extra commit that you'll just have to squash later.# Usage: git includeinclude = !git commit --amend --no-edit
Returns a list of the most recent ‘n’ number of commits formatted with the short hash, the user name, a timestamp, and the commit message# Usage: git lg <number-of-commits>, e.g. ‘git lg 15’ returns the most recent 15 commits and then gives you the status of your local repo.lg = !git log -$1 --pretty=format:"'%h - %an, %ar : %s'" && git status
Returns a list of the aliases (along with their definitions) that are currently defined in your
.gitconfigfile. Hooray for regex and sed!# Usage: git aliasesaliases = !git config --get-regexp ^alias\\. | sed -e s/^alias\\.// -e s/\\ /\\ =\\ /
A simple undo command that winds back your last commit. The
--softoption ensures that Git only removes the last commit without changing anything about the local files in your working tree.
HEAD~1is simply a way of referencing the commit one before the HEAD.# Usage: git undoundo = !git reset --soft HEAD~1
Provides a quick, detailed report of the most recent commit. Lists the files that the commit affected along with the number of lines inserted and deleted for each.# Usage: git lastlast = !git log -1 HEAD --stat
Returns a fancy-schmancy looking list of local branches including lots of special fields.
%(HEAD)adds an asterisk alongside the current branch# Usage: git brbr = !git branch --format='%(HEAD) %(color:yellow)%(refname:short)%(color:reset) - %(contents:subject) %(color:green)(%(committerdate:relative)) [%(authorname)]' --sort=-committerdate