[user]
- name = Hendrik Jäger
- email = hendrik@securosys.ch
+ name = Hendrik Jäger
+ email = gitcommit@henk.geekmail.org
-# push/pull/diff/options
+[branch]
+ # always make new branches rebase on their tracking branch
+ autosetuprebase = always
+[diff]
+ # use (i)ndex, (w)orktree, (c)ommit, etc instead of a/ and b/
+ mnemonicprefix = true
+ # detect renames and copies
+ renames = copies
+ # use different color for moved code (default == zebra, currently)
+ colorMoved = default
+[fetch]
+ # delete tracking references and info about remote branches
+ # does not delete any branches
+ prune = true
+[grep]
+ # show linenumber (-n)
+ lineNumber = true
+[merge]
+ # only do fastforward merges
+ ff = only
[push]
- default = current
+ # push to branch with same name on remote
+ default = current
[pull]
- default = current
-[diff]
- mnemonicprefix = true
-[branch]
- autosetuprebase = always
-[apply]
- whitespace = nowarn
-
-[rerere]
- enabled = false
+ # rebase, don’t merge, local changes
+ rebase = true
+ # only accept fastforwards by default
+ ff = only
[rebase]
- autosquash = true
+ # when in a dirty worktree, automatically create a stash before and apply after rebasing
+ autoStash = true
+ # automatically squash marked commits (squash! …, fixup! …)
+ autosquash = true
+[rerere]
+ # don’t use rerere to resolve merge conflicts
+ enabled = false
-# alias {{{
[alias]
-# basic {{{
- st = status -s
- cl = clone
- ci = commit
- co = checkout
- br = branch
- r = reset
- cp = cherry-pick
- gr = grep -Ii
-# }}}
-# tweak defaults {{{
- diff = diff --word-diff
- branch = branch -ra
- grep = grep -Ii
- bra = branch -ra
- ai = add --interactive
- # grep on filename
- f = "!git ls-files | grep -i"
-# }}}
-# commit {{{
- cm = commit -m
- cma = commit -a -m
- ca = commit --amend
- amend = commit --amend
- caa = commit -a --amend -C HEAD
-# }}}
-# log commands {{{
- ls = log --pretty=format:"%C(green)%h\\ %C(yellow)[%ad]%Cred%d\\ %Creset%s%Cblue\\ [%cn]" --decorate --date=relative
- ll = log --pretty=format:"%C(yellow)%h%Cred%d\\ %Creset%s%Cblue\\ [%cn]" --decorate --numstat
- lc = "!f() { git ll "$1"^.."$1"; }; f"
- lnc = log --pretty=format:"%h\\ %s\\ [%cn]"
- fl = log -u
- filelog = log -u
- lg = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit
- lga = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --all
-# }}}
-# diff {{{
- d = diff --word-diff
- dc = diff --cached
- # diff last commit
- dlc = diff --cached HEAD^
- dr = "!f() { git diff -w "$1"^.."$1"; }; f"
- diffr = "!f() { git diff "$1"^.."$1"; }; f"
-# }}}
-# reset commands {{{
- r1 = reset HEAD^
- r2 = reset HEAD^^
- rh = reset --hard
- rh1 = reset HEAD^ --hard
- rh2 = reset HEAD^^ --hard
-# }}}
-# git svn {{{
- svnr = svn rebase
- svnd = svn dcommit
- svnl = svn log --oneline --show-commit
-# }}}
-# stash {{{
- sl = stash list
- sa = stash apply
- ss = stash save
-# }}}
-# assume aliases {{{
- assume = update-index --assume-unchanged
- unassume = update-index --no-assume-unchanged
- # show assumed files
- assumed = "!git ls-files -v | grep ^h | cut -c 3-"
- # unassume all the assumed files
- unassumeall = "!git assumed | xargs git update-index --no-assume-unchanged"
- assumeall = "!git status -s | awk {'print $2'} | xargs git assume"
-# }}}
-# subtree {{{
- # add
- sba = "!f() { git subtree add --prefix $2 $1 master --squash; }; f"
- # update/pull
- sbu = "!f() { git subtree pull --prefix $2 $1 master --squash; }; f"
-# }}}
-# various useful {{{
- # last tag created
- lasttag = "describe --tags --abbrev=0"
- lt = "describe --tags --abbrev=0"
-
- # tag logs
- taglog = "log --tags --simplify-by-decoration --pretty='format:%ci %d'"
-
- # conflict/merges
- ours = "!f() { git co --ours $@ && git add $@; }; f"
- theirs = "!f() { git co --theirs $@ && git add $@; }; f"
-
- #list remotes
- rem="!git config -l | grep remote.*url | tail -n +2"
-
- #apply patch from other local repo
- lap = "!f() { git --git-dir=$1 format-patch -k -1 --stdout $2 | git am -3 -k; }; f"
-
- #open markdown files edited in last commit
- last = "!gvim $(git show HEAD --format="" --name-only | grep -e .*md$ | xargs)"
- #open just created markdown in working directory
- newmd = "!gvim $(git status -s | awk {'print $2'})"
-
- # initial empty commit
- empty = "!git commit -am\"[empty] Initial commit\" --allow-empty"
-
- # list all aliases
- la = "!git config -l | grep alias | cut -c 7-"
-# }}}
-# convoluted aliases {{{
- # 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"
- #rename branch tree to done-
- done = "!f() { git branch | grep "$1" | cut -c 3- | grep -v done | xargs -I{} git branch -m {} done-{}; }; f"
- #add bitbucket remote
- ra = "!f() { git remote add $1 https://bitbucket.org/$2.git; }; f"
-# }}}
-# worktree list {{{
- wl = worktree list
- # undo from here http://megakemp.com/2016/08/25/git-undo/
- undo = "!f() { git reset --hard $(git rev-parse --abbrev-ref HEAD)@{${1-1}}; }; f"
-# }}}
-
-serve = !git daemon --reuseaddr --verbose --base-path=. --export-all ./.git
+ a = add
+ ap = add --patch
+ ai = add --interactive
+
+ b = branch
+ br = branch
+ bra = branch --all
+
+ co = checkout
+ cob = checkout -b
+
+ cp = cherry-pick
+ cpa = cherry-pick --abort
+ cpc = cherry-pick --continue
+
+ ci = commit
+ cm = commit -m
+ cma = commit --all -m
+ cmv = commit --all --verbose
+ ca = commit --amend
+ amend = commit --amend
+ caa = commit --all --amend --reuse-message=HEAD
+ fix = commit --all --fixup
+
+ diff = diff --word-diff
+ d = diff --word-diff
+ dc = diff --cached
+ dlc = diff --cached HEAD^
+ dr = "!f() { git diff -w "$1"^.."$1"; }; f"
+ diffr = "!f() { git diff "$1"^.."$1"; }; f"
+
+ gr = grep -Ii
+ grep = grep -Ii
+
+ ls = log --pretty=format:"%C(green)%h\\ %C(yellow)[%ad]%Cred%d\\ %Creset%s%Cblue\\ [%cn]" --decorate --date = relative
+ ll = log --pretty=format:"%C(yellow)%h%Cred%d\\ %Creset%s%Cblue\\ [%cn]" --decorate --numstat
+ lnc = log --pretty=format:"%h\\ %s\\ [%cn]"
+ fl = log -u
+ filelog = log -u
+ lg = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit
+ lga = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --all
+ # tag logs
+ taglog = "log --tags --simplify-by-decoration --pretty='format:%ci %d'"
+
+ pl = pull
+ pla = pull --all
+
+ ps = push
+ please = push --force-with-lease
+
+ rem = remote
+
+ rb = rebase
+ rba = rebase --abort
+ rbc = rebase --continue
+
+ r = reset
+ r1 = reset HEAD^
+ r2 = reset HEAD^^
+ rh = reset --hard
+ rh1 = reset --hard HEAD^
+ rh2 = reset --hard HEAD^^
+
+ sl = stash list
+ sa = stash apply
+ ss = stash save
+
+ s = status --short
+ st = status --short
+
+ # grep on filename
+ f = "!git ls-files | grep -i"
+ lc = "!f() { git ll "$1"^.."$1"; }; f"
+ svnr = svn rebase
+ svnd = svn dcommit
+ svnl = svn log --oneline --show-commit
+ assume = update-index --assume-unchanged
+ unassume = update-index --no-assume-unchanged
+ # show assumed files
+ assumed = "!git ls-files -v | grep ^h | cut -c 3-"
+ # unassume all the assumed files
+ unassumeall = "!git assumed | xargs git update-index --no-assume-unchanged"
+ assumeall = "!git status -s | awk {'print $2'} | xargs git assume"
+ # add
+ sba = "!f() { git subtree add --prefix $2 $1 master --squash; }; f"
+ # update/pull
+ sbu = "!f() { git subtree pull --prefix $2 $1 master --squash; }; f"
+ # last tag created
+ lasttag = "describe --tags --abbrev=0"
+ lt = "describe --tags --abbrev=0"
+
+ # conflict/merges
+ ours = "!f() { git co --ours $@ && git add $@; }; f"
+ theirs = "!f() { git co --theirs $@ && git add $@; }; f"
+
+ #list remotes
+ rem="!git config -l | grep remote.*url | tail -n +2"
+
+ #apply patch from other local repo
+ lap = "!f() { git --git-dir=$1 format-patch -k -1 --stdout $2 | git am -3 -k; }; f"
+
+ #open markdown files edited in last commit
+ last = "!gvim $(git show HEAD --format="" --name-only | grep -e .*md$ | xargs)"
+ #open just created markdown in working directory
+ newmd = "!gvim $(git status -s | awk {'print $2'})"
+
+ # initial empty commit
+ empty = "!git commit -am\"[empty] Initial commit\" --allow-empty"
+
+ # list all aliases
+ la = "!git config -l | grep alias | cut -c 7-"
+ # 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"
+ #rename branch tree to done-
+ done = "!f() { git branch | grep "$1" | cut -c 3- | grep -v done | xargs -I{} git branch -m {} done-{}; }; f"
+ #add bitbucket remote
+ ra = "!f() { git remote add $1 https://bitbucket.org/$2.git; }; f"
+ wl = worktree list
+ # undo from here http://megakemp.com/2016/08/25/git-undo/
+ undo = "!f() { git reset --hard $(git rev-parse --abbrev-ref HEAD)@{${1-1}}; }; f"
+ serve = !git daemon --reuseaddr --verbose --base-path=. --export-all ./.git