ambakshi
11/30/2014 - 4:41 AM

my gitconfig

my gitconfig

; vim:set filetype=dosini:

[alias]
    fap = fetch --all --prune
    sb = status -sb
    st = status -s
    co = checkout
    br = branch
    bv = branch -avv
    rv = remote -v
    ci = commit
    diff = diff --word-diff
    df = diff --word-diff
    dc = diff --cached
    ds = diff --stat
    m  = checkout master
    f  = "!git ls-files | grep"
    grep = "grep -I"
    undo = reset --soft HEAD^
    count = shortlog -sn
;    credit = commit --amend --author "$1 <$2>" -C HEAD

    pom = push origin master

    wip = !"git add -A; git ls-files --deleted -z | xargs -0 git rm; git commit -m \"wip\""
    unwip = !"git log -n 1 | grep -q -c wip && git reset HEAD~1"
    rb = !"git wip;git rebase -i origin/master;git unwip"
    pr = !"git fetch;git wip;git rebase --stat origin;git unwip;git heads"
    head = !"git log -n1"
    lost = !"git fsck | awk '/dangling commit/ {print $3}' | git show --format='SHA1: %C(yellow)%h%Creset %f' --stdin | awk '/SHA1/ {sub(\"SHA1: \", \"\"); print}'"
    heads = !"git log origin/master.. --format='%Cred%h%Creset;%C(yellow)%an%Creset;%H;%Cblue%f%Creset' | git name-rev --stdin --always --name-only | column -t -s';'"
    #lg = log --graph --pretty=oneline --abbrev-commit
    lg = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative
    lgc= log --oneline --left-right --cherry-pick
    lm= log --no-merges --pretty=format:"%C(yellow)%h%Cred%d\\ %Creset%s%Cblue\\ [%cn]" --decorate --numstat
    lc = log ORIG_HEAD.. --stat --no-merges
    lol = log --graph --decorate --pretty=oneline --abbrev=commit
    lola = log --graph --decorate --pretty=oneline --abbrev=commit --all
    changelog = log --pretty=format:"%h%x09%ad%x09%ae%x09%s" --date=iso
    sh = show --pretty=raw
    lh = log --pretty=format:"%h %s" --graph
    dump = cat-file -p
    type = cat-file -t
    exec = "!exec "
    tld = rev-parse --show-toplevel
    active = !"for k in `git branch |sed 's/^..//'`;do echo `git log -1 --pretty=format:'%Cgreen%ci %Cblue%cr%Creset' \"$k\"`\\\t\"$k\";done|sort -r"
    activer = !"for k in `git branch -a|sed 's/^..//'`;do [ \"$k\" = \"->\" ] && continue; echo `git log -1 --pretty=format:'%Cgreen%ci %Cblue%cr%Creset' \"$k\"`\\\t\"$k\";done|sort -r"
    done = "!f() { git branch | grep "$1" | cut -c 3- | grep -v done | xargs -I{} git branch -m {} done-{}; }; f"
    #thisbranch = name-rev --name-only HEAD
    thisbranch = rev-parse --abbrev-ref HEAD
    tagnames = !"git log --pretty=oneline | git name-rev --stdin"

; from https://git.wiki.kernel.org/index.php/Aliases
    whois = "!sh -c 'git log -i -1 --pretty=\"format:%an <%ae>\n\" --author=\"$1\"' -"
    whatis = show -s --pretty='tformat:%h (%s, %ad)' --date=short

;   grep from root folder
    gra = "!f() { A=$(pwd) && TOPLEVEL=$(git rev-parse --show-toplevel) && cd $TOPLEVEL && git grep --full-name -In $1 | xargs -I{} echo $TOPLEVEL/{} && cd $A; }; f"
;   from http://durdn.com/blog/2012/11/22/must-have-git-aliases-advanced-examples/
    find = "!git ls-file | grep -i"
    grep = "grep -I"

[push]
    default = current

[branch]
    autosetuprebase = always

[log]
    date = local

[color]
    ui = true
    pager = true
    diff = auto
    status = auto
    branch = auto
    interactive = auto

[pager]
    log = diff-highlight | less
    show = diff-highlight | less
    diff = diff-highlight | less


[color "diff"]
    whitespace = red reverse

[core]
    editor = vim
    autocrlf = false
    excludesfile = ~/.gitignore
    whitespace=fix,-indent-with-non-tab,trailing-space,cr-at-eol
    preloadindex = true

[color "status"]
    added = yellow
    changed = green
    untracked = cyan

[grep]
    extendedRegexp = true

[diff]
    guitool = p4merge
    tool    = vimdiff
    renames = copies
    algorithm = patience
    renameLimit = 1000

[difftool]
; cmd = p4merge \"$LOCAL\" \"$REMOTE\"
    prompt = false

[difftool "sourcetree"]
    cmd = opendiff \"$LOCAL\" \"$REMOTE\"
    path =

[merge]
    tool = p4merge
; tool = vimdiff
    keepBackup = false

[mergetool "sourcetree"]
    cmd = /Applications/SourceTree.app/Contents/Resources/opendiff-w.sh \"$LOCAL\" \"$REMOTE\" -ancestor \"$BASE\" -merge \"$MERGED\"
    trustExitCode = true

[mergetool "p4merge"]
; cmd = p4merge "$BASE" "$LOCAL" "$REMOTE" "$MERGED"
    keepTemporaries = false
    trustExitCode = false
    keepBackup = false

[rerere]
	enabled = 1
    autoupdate = 1

; URL rewriting example
;[url "file:///home/abakshi/base/repo/.git"]
;        insteadOf = "git@git.foo.com:base/repo.git"

[hub]
    protocol = https