blob: b831675b35152b5c2ebac90fb3aa589c3a4bf299 (
plain) (
blame)
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
|
[user]
name = Anton Bobov
email = anton@bobov.name
signingkey = B4DCCEF7CE0E6AF3
[commit]
gpgsign = true
verbose = true
[tag]
gpgsign = true
sort = version:refname
[http]
sslVerify = false
[color "diff-highlight"]
oldNormal = red bold
oldHighlight = red bold reverse
[color "diff"]
meta = 11
frag = magenta bold
commit = yellow bold
old = red bold
new = green bold
whitespace = red reverse
[diff]
algorithm = histogram
tool = vimdiff
colorMoved = true
submodule = log
mnemonicprefix = true
[diff-so-fancy]
stripLeadingSymbols = false
markEmptyLines = false
[grep]
lineNumber = true
[merge]
conflictstyle = zdiff3
stat = true
tool = vimdiff
[core]
pager = diff-so-fancy | less -+$LESS -FRX
excludesfile = ~/.gitignore
quotepath = false
attributesfile = ~/.gitattributes
[log]
decorate = short
mailmap = true
date = iso-local
[alias]
aa = add --all
amend = commit --amend
ar = !sh -c 'git archive --format=tar --prefix="$(basename "$PWD")-$1/" $1^{tree} | bzip2 >"$(basename "$PWD")-$1.tar.bz2"' -
br = branch --sort=-committerdate
blame = blame -w -C -C -C
acm = !git add --all && git commit -m
c = commit --verbose
co = checkout
ci = commit
diffstat = diff --stat -r
dc = diff --find-copies-harder --cached
di = diff --find-copies-harder
dshow = "!f() { DFT_BACKGROUND=light git -c diff.external=difft show --ext-diff $@; }; f"
dlog = "!f() { DFT_BACKGROUND=light git -c diff.external=difft log -p --ext-diff $@; }; f"
ddiff = "!f() { DFT_BACKGROUND=light git -c diff.external=difft diff $@; }; f"
fix = commit --amend -C HEAD
try = merge --no-commit --no-ff
history-all = "!gitk --all $( git fsck | awk '/dangling commit/ {print $3}'; git log -g --pretty='format:%H')"
k = !sh -c 'gitk $1' -
ka = !sh -c 'gitk --all' -
kb = !sh -c 'gitk --branches' -
lg = log --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%aN>%Creset' --abbrev-commit --date=relative
l = "!git lg -10"
f = !sh -c 'git branch | grep -F "feature/$1" | xargs -r -n 1 git co' -
st = status
stashlist = stash list --date=short
stash-all = stash save --include-untracked
sha = rev-parse --short
addnw = !sh -c 'git diff --unified=0 --ignore-all-space --no-color "$@" | git apply --cached --ignore-whitespace --unidiff-zero -'
branch-name = "!git rev-parse --abbrev-ref HEAD"
pushf = push --force-with-lease
publish = "!git push -u origin $(git branch-name)"
# https://datagrok.org/git/git-serve/
quickserve="daemon --verbose --export-all --base-path=.git --reuseaddr --strict-paths .git/"
# https://github.com/anishathalye/dotfiles/blob/master/gitconfig
update-submodules = submodule update --init --recursive
upgrade-submodules = submodule update --init --remote
wc = whatchanged -p --abbrev-commit --pretty=medium
undo = reset --soft HEAD~
whoami = config user.email
fugitive = mergetool --tool fugitive
clean-branches = !sh -c 'git branch --merged | grep -v '^*' | fzf -m | xargs -rp git branch -d'
co-before = !sh -c 'git rev-list -1 --before="$@" HEAD | xargs -r git checkout' -
ri = rebase --interactive
rc = rebase --continue
ra = rebase --abort
rx = rebase --exec
prebase = rebase -x 'chronic pre-commit run --from-ref HEAD~ --to-ref HEAD'
# Gitlab merge requests helpers
mr = !sh -c 'git fetch $1 merge-requests/$2/head:mr-$1-$2 && git checkout mr-$1-$2' -
mr-clean = "!git for-each-ref refs/heads/mr/* --format='%(refname)' | while read ref ; do branch=${ref#refs/heads/} ; git branch -D $branch ; done"
recent = "!git for-each-ref --color=always --sort=-committerdate refs/heads --format='%(HEAD)%(color:yellow)%(refname:short)|%(color:magenta)%(authorname)%(color:reset)|%(color:bold green)%(committerdate:relative)|%(color:red)%(objectname:short)%(color:reset)'|column -ts'|'"
edit-exclude = "!f() { GIT_DIR=\"$(git rev-parse --git-dir 2>/dev/null)\"; $EDITOR \"$GIT_DIR/info/exclude\"; }; f"
[advice]
statusHints = false
detachedHead = false
[branch]
autosetupmerge = always
autosetuprebase = local
sort = -committerdate
[rebase]
instructionFormat = %s [%aN] {%ar}
autoStash = true
updateRefs = true
autoSquash = true
[rerere]
autoUpdate = true
enabled = true
[status]
submoduleSummary = true
[help]
autocorrect = 10
[remote-hg]
hg-git-compat = true
[filter "tabs"]
;clean = unexpand --tabs=4 --first-only
[gui]
tabsize = 2
gcwarning = false
[pull]
rebase = true
[push]
followTags = true
gpgSign = if-asked
autoSetupRemote = true
[guitool "meld"]
cmd = meld $FILENAME
noconsole = yes
needsfile = yes
[guitool "gvim"]
cmd = gvim $FILENAME
noconsole = yes
needsfile = yes
[include]
path = ~/.gitconfig.local
[filter "lfs"]
required = true
clean = git-lfs clean -- %f
smudge = git-lfs smudge -- %f
process = git-lfs filter-process
[mergetool "fugitive"]
cmd = vim -c \"Gdiff\" \"$MERGED\"
[fetch]
prune = true
writeCommitGraph = true
pruneTags = true
all = true
[column]
ui = auto
# Allow pushing changes when working with a "read-only" remote from GitHub.
[url "git@github.com:"]
pushInsteadOf = https://github.com/
pushInsteadOf = git://github.com/
|