[color]
  ui = true
[color "branch"]
  current = yellow reverse
  local = yellow
  remote = green
[color "diff"]
  meta = yellow bold
  frag = magenta bold
  old = red bold
  new = green bold
[alias]
	d = diff 			# show unstaged changes
	dc = diff --cached		# show staged changes
  last = diff HEAD^ # show last committed change
	unstage = reset HEAD 		# remove files from index (tracking)
	uncommit = reset --soft HEAD^   # go back before last commit, with files in uncommitted state
	chunkyadd = add --patch		# stage commits chunk by chunk
	filelog = log -u		# show changes to a file
	amend = commit --amend
	ammend = commit --amend
	mt = mergetool	#fire up the merge tool
  
  addall = !sh -c 'git add . && git add -u'

	# rebasing
	rc = rebase --continue
	rs = rebase --skip
	
	# save some typing for common commands
	ci = commit
	co = checkout
	b = branch -v
	r = remote -v
	t = tag -n
	
	# create and switch to a new branch (mnemonic: "git new branch branchname...")
	nb = checkout -b  

	stat = status
	s = status
	
	# stashing
	ss = stash
	sl = stash list
	sa = stash apply
	sd = stash drop

	# grab a change from a branch
	cp = cherry-pick -x

	# move patch

	# nice logs
	changes = log --pretty=format:\"%h %cr %cn %Cgreen%s%Creset\" --name-status
	short = log --pretty=format:\"%h %cr %cn %Cgreen%s%Creset\" 
	changelog = log --pretty=format:\" * %s\" 
	shortnocolor = log --pretty=format:\"%h %cr %cn %s\" 
  
	# svn helpers
	svnr = svn rebase
	svnd = svn dcommit
	svnl = svn log --oneline --show-commit 

  drop = !sh -c 'git add . && git stash && git stash drop'
  grab = !sh -c 'git-grab.sh'
[gc]
#	auto = 1
[merge]
	summary = true
	verbosity = 1
[apply]
	whitespace = nowarn
[branch]
  autosetupmerge = true
[push]
  # 'git push' will push the current branch to its tracking branch
  # the usual default is to push all branches
	default = tracking 
[core]
	autocrlf = false
  editor = /usr/bin/vim
	excludesfile = ~/.dotfiles/gitignore_global

[merge]
  tool = threesome

[mergetool "threesome"]
  cmd = "mvim -f $BASE $LOCAL $REMOTE $MERGED -c 'ThreesomeInit'"
  trustExitCode = true
[difftool "sourcetree"]
	cmd = opendiff \"$LOCAL\" \"$REMOTE\"
	path = 
[mergetool "sourcetree"]
	cmd = /Applications/SourceTree.app/Contents/Resources/opendiff-w.sh \"$LOCAL\" \"$REMOTE\" -ancestor \"$BASE\" -merge \"$MERGED\"
	trustExitCode = true
[advice]
	statusHints = false
[diff]
  # Git diff will use (i)ndex, (w)ork tree, (c)ommit and (o)bject 
  # instead of a/b/c/d as prefixes for patches
	mnemonicprefix = true

[rerere]
  # Remember my merges
  # http://gitfu.wordpress.com/2008/04/20/git-rerere-rereremember-what-you-did-last-time/
	enabled = true
