summaryrefslogtreecommitdiff
path: root/.config/git/config
blob: 47d6b7c2a4373d01ee0ee007c1a6f1dca067ddb9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
[user]
    name = Hendrik Jäger
    email = hendrik@securosys.ch

# push/pull/diff/options
[push]
    default = current
[pull]
    default = current
[diff]
    mnemonicprefix = true
[branch]
    autosetuprebase = always
[apply]
    whitespace = nowarn

[rerere]
    enabled = false
[rebase]
    autosquash = true

# 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

    # 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