Skip to Content

Make your life easier with Git aliases

Posted on

If there is one tool I’m constantly using throughout the day, it must be Git! Since most of the commands I need are basically the same, I’ve created some Git aliases to reduce the number of keystrokes.

You can place these aliases in your ~/.gitconfig file, under the [alias] section. If you need project-specific overrides or aliases, you can put them in the .git/config file inside each repository too.

You can do this with a text editor or by using the git config --global alias.<name> "<command>" command.

Push current branch to the origin repository

This alias will push the branch you’re currently working in back to origin.

p = "!git push origin $(git rev-parse --abbrev-ref HEAD)"

If you want to push other branches besides the current one, you can add them as extra arguments. For example: git p master will push both the current working branch and your local master branch back.

Pull in latest changes for the current branch and rebase

Whenever I continue to work on a branch, I want to make sure I have the latest changes locally. This alias will pull in the latest changes for the current branch from origin and rebase my own local commits - if any - on top of them.

pu = "!git pull --rebase origin $(git rev-parse --abbrev-ref HEAD)"

Call with: git pu

Commit changes

Commit a little bit faster with this alias:

c = "!git commit -a -m "

Example usage: git c "My commit message"

Checkout a branch

Another short one, to checkout a different branch:

co = "!git checkout "

For example, checkout the feature/wip branch with git co feature/wip or create a new feature/new branch with git co -b feature/new.

Merge current branch into another one

On projects where we work with a staging or test branch, I regularly merge my work in progress into it so others can test it.

Because it’s not possible to pass arguments directly to a git alias, I’m using a function here (f()). That way I can chain multiple git commands. Here’s how what this alias looks like:

m = "!f() { CURBRANCH=$(git rev-parse --abbrev-ref HEAD); git co \"$1\" && git pu && git merge $CURBRANCH && git p && git co $CURBRANCH; }; f"

If you now type git m staging while on the feature/wip branch, this will happen:

  1. First, the function checks out the staging branch.
  2. It then pulls the latest changes to the staging branch from origin.
  3. Then it merges feature/wip into staging.
  4. Next, it pushes the updated staging branch back to origin.
  5. Finally, it checks out the feature/wip branch again.

Such a timesaver!

These examples are specific to the way I work but these should set you on your way to create your own!