-
Notifications
You must be signed in to change notification settings - Fork 0
/
.gitconfig
204 lines (191 loc) · 5.58 KB
/
.gitconfig
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
199
200
201
202
203
204
# core {{{
[core]
editor = /usr/local/bin/nvim
pager=less -x4
excludesFile = ~/.gitignore_global
trustctime = false
#}}}
# user {{{
[user]
email = [email protected]
name = Patrick Bassut
signingkey = F6F536EAEE133D30
#}}}
# include sendemail config {{{
[include]
path = ~/.git-sendemail
# }}}
# color {{{
[color]
ui = auto
[color "branch"]
current = yellow reverse
local = yellow
remote = green
[color "diff"]
meta = yellow bold
frag = magenta bold
old = red bold
new = green bold
[color "status"]
added = yellow
changed = green
untracked = cyan
# }}}
# push/pull/diff/options {{{
[push]
default = current
[pull]
default = current
[branch]
autosetuprebase = always
[apply]
whitespace = nowarn
#}}}
# alias {{{
[alias]
# Delete all local branches but master and the current one, only if they are fully merged with master.
br-delete-useless = "!f(){\
git branch | grep -v "master" | grep -v ^* | xargs git branch -d;\
}; f"
# Delete all local branches but master and the current one.
br-delete-useless-force = "!f(){\
git branch | grep -v "master" | grep -v ^* | xargs git branch -D;\
}; f"
# basic {{{
adp = add -p
st = status -s
cl = clone
ci = commit
c = checkout
cb = checkout -b
p = push
pl = pull
br = branch
r = reset
rp = reset -p
ri = rebase -i
ri1 = rebase -i HEAD~1
ri2 = rebase -i HEAD~2
rc = rebase --continue
cp = cherry-pick
gr = grep -Ii
# }}}
# tweak defaults {{{
diff = diff --word-diff
branch = branch -ra
recent = "!git branch --sort=-committerdate | head -n 10"
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
samend = commit --amend --no-edit
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
cbr = rev-parse --abbrev-ref HEAD
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
lg1 = log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(bold yellow)%d%C(reset)' --all
lg2 = log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold cyan)%aD%C(reset) %C(bold green)(%ar)%C(reset)%C(bold yellow)%d%C(reset)%n'' %C(white)%s%C(reset) %C(dim white)- %an%C(reset)' --all
lg = !"git lg1"
# }}}
# 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
# }}}
# stash {{{
sl = stash list
sp = stash pop
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"
brc = "!git branch --show-current"
p = pull
# list all aliases
la = "!git config -l | grep alias | cut -c 7-"
mt = mergetool
# }}}
# 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"
# }}}
# worktree list {{{
wl = worktree list
ctags = !.git/hooks/ctags
# }}}
# }}}
[rerere]
enabled = false
[rebase]
autosquash = true
[filter "lfs"]
clean = git-lfs clean %f
smudge = git-lfs smudge %f
required = true
[http]
postBuffer = 157286400
[merge]
tool = opendiff
[diff]
tool = opendiff
[mergetool "opendiff"]
trustExitCode = false
[commit]
gpgsign = true