Git aliases

Aliases simplify working with git commands

Git is simple and powerful, but sometimes its commands and options are getting in the way of my development flow. Fortunately, it does allow easy customization.

First, create a file .gitconfig in your user folder. It is a simple text file with sections and properties. I prefer editing this file to entering individual properties through the git config command.

editor

I usually avoid editing text from the command line and prefer to use a lightweight text editor like Notepad2 or Sublime

[core]
    editor = notepad2

command aliases

Here is my day to day workflow using my custom aliases:

// see current state of things
git st

// see very compact log of things
git lg

// normal work: add, modify, delete

// see changes as word differences
git wdiff

// commit to local repo
git done "done and done"

// push all branches to origin
// similar alias for github, bitbucket
git toorigin

// every day before going to stand up I want to see my commits
git standup

Here are the command aliases:

[alias]
  st = status -sb
  standup = log --pretty=format:'%Cred%h%Creset -%Creset %s %Cgreen(%cD) %C(bold blue)<%an>%Creset' --since='1 week ago' --author gleb
  lg = log --pretty=format:'%Cred%h%Creset -%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset'
  wdiff = diff --word-diff=plain
  ignored = ls-files --others -i --exclude-standard
  amend = !git log -n 1 --pretty=tformat:%s%n%n%b | git commit -F - --amend
  done = commit -am
  toorigin = push origin --all
  togithub = push github --all
  tobitbucket = push bitbucket --all

git aliases: the best part

Git is smart enough to suggest aliases in addition to its built-in commands if you misspell something:

$ git s
git: 's' is not a git command. See 'git --help'.

Did you mean one of these?
        show
        status
        st

How cool is this?!

color options

Previous aliases look nice because they use custom colors:

[color]
  branch = auto
  diff = auto
  status = auto
  ui = true
[color "branch"]
  current = yellow reverse
  local = yellow
  remote = green
[color "diff"]
  meta = yellow bold
  frag = magenta bold
  old = red
  new = cyan
[color "status"]
  added = yellow
  changed = green
  untracked = cyan

More information

I keep my .files in a git repo located in my user folder, available on github. Feel free to fork and modify. It is largely based on the repo created by Paul Irish