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.
I usually avoid editing text from the command line and prefer to use a lightweight text editor like Notepad2 or Sublime
[core] editor = notepad2
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?!
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
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
- I use git-extras to perform all my Git commands from the terminal.
- git-tips is a huge list of useful Git one-liners
- my blog post Git Tips And Tricks