aboutsummaryrefslogtreecommitdiffstats
path: root/_gitconfig
blob: 4034a28e2c8367c4bfa649dbd7b7f74e07b3a1a3 (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
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
#
# ~/.gitconfig
# User's global Git configuration file
#
# Credit:
# * https://gist.github.com/pksunkara/988716
#
# References:
# [1] A Git Horror Story: Repository Integrity with Signed Commits
#     https://mikegerwitz.com/papers/git-horror-story.html
# [2] What are the advantages and disadvantages of cryptographically
#     signing commits and tags in Git?
#     https://softwareengineering.stackexchange.com/a/212216
#
# Aaron LI
#

[core]
    # Use 'less' as the pager and display tabs of width 8
    pager = less -x1,9

[user]
    name = Aaron LI
    email = aly@aaronly.me
    signingKey = aly@aaronly.me

[push]
    default = simple

[commit]
    # Sign every commit
    #gpgSign = true
    # Use a message template
    template = ~/.gitmessage

[tag]
    # Sign every tag
    gpgSign = true

[color]
    ui = auto

[diff]
    # Show space and tabs
    # Credit: https://stackoverflow.com/a/30803980
    wsErrorHighlight = all

[alias]
    a = add --all
    ai = add -i
    #############
    ap = apply
    as = apply --stat
    ac = apply --check
    #############
    ama = am --abort
    amr = am --resolved
    ams = am --skip
    #############
    b = branch
    ba = branch -a
    bd = branch -d
    br = branch -r
    #############
    c = commit
    ca = commit -a
    cm = commit -m
    cem = commit --allow-empty -m
    cam = commit -am
    cd = commit --amend
    cad = commit -a --amend
    ced = commit --allow-empty --amend
    #############
    d = diff
    dc = diff --cached
    dl = difftool
    dlc = difftool --cached
    dk = diff --check
    dp = diff --patience
    dck = diff --cached --check
    #############
    f = fetch
    fo = fetch origin
    fu = fetch upstream
    #############
    fp = format-patch
    #############
    fk = fsck
    #############
    g = grep -p
    #############
    l = log --oneline
    lg = log --oneline --graph --decorate
    #############
    ls = ls-files
    lsf = "!git ls-files | grep -i"
    #############
    m = merge
    ma = merge --abort
    mc = merge --continue
    ms = merge --skip
    #############
    o = checkout
    ob = checkout -b
    #############
    pr = prune -v
    #############
    ps = push
    psf = push -f
    psu = push -u
    pso = push origin
    psao = push --all origin
    psfo = push -f origin
    psuo = push -u origin
    psom = push origin master
    psfom = push -f origin master
    psuom = push -u origin master
    #############
    pl = pull
    plu = pull -u
    plo = pull origin
    plp = pull upstream
    plom = pull origin master
    plpm = pull upstream master
    #############
    pb = pull --rebase
    pbo = pull --rebase origin
    pbp = pull --rebase upstream
    pbom = pull --rebase origin master
    pbpm = pull --rebase upstream master
    #############
    rb = rebase
    rba = rebase --abort
    rbc = rebase --continue
    rbi = rebase --interactive
    rbs = rebase --skip
    #############
    re = reset
    rh = reset HEAD
    reh = reset --hard
    rem = reset --mixed
    res = reset --soft
    rehh = reset --hard HEAD
    remh = reset --mixed HEAD
    resh = reset --soft HEAD
    #############
    r = remote
    ra = remote add
    rr = remote rm
    rv = remote -v
    rm = remote rename
    rp = remote prune
    rs = remote show
    rao = remote add origin
    rau = remote add upstream
    rso = remote show origin
    rsu = remote show upstream
    rpo = remote prune origin
    rpu = remote prune upstream
    #############
    s = status
    sb = status -s -b
    #############
    sa = stash apply
    sc = stash clear
    sd = stash drop
    sl = stash list
    sp = stash pop
    ss = stash save
    sw = stash show
    #############
    w = show
    wp = show -p
    wr = show -p --no-color
    #############
    svnr = svn rebase
    svnd = svn dcommit
    svnl = svn log --oneline --show-commit
    #############
    assume = update-index --assume-unchanged
    unassume = update-index --no-assume-unchanged
    assumed = "!git ls-files -v | grep ^h | cut -c 3-"
    unassumeall = !git assumed | xargs git update-index --no-assume-unchanged
    assumeall = "!git st -s | awk {'print $2'} | xargs git assume"
    #############
    ours = "!f() { git checkout --ours $@ && git add $@; }; f"
    theirs = "!f() { git checkout --theirs $@ && git add $@; }; f"
    #############
    whois = "!sh -c 'git log -i -1 --pretty=\"format:%an <%ae>\n\" --author=\"$1\"' -"
    whatis = show -s --pretty='tformat:%h (%s, %ad)' --date=short
    #############
    barebranch = !sh -c 'git symbolic-ref HEAD refs/heads/$1 && git rm --cached -r . && git clean -xfd' -
    flat = clone --depth 1
    subpull = !git submodule foreach git pull --tags origin master
    subrepo = !sh -c 'filter-branch --prune-empty --subdirectory-filter $1 master' -
    human = name-rev --name-only --refs=refs/heads/*
    serve = !git daemon --reuseaddr --verbose  --base-path=. --export-all ./.git
    snapshot = !git stash save "snapshot: $(date)" && git stash apply "stash@{0}"