aboutsummaryrefslogtreecommitdiff
path: root/files/.gitconfig
blob: c03767e012af13e0b7f87b675b5adff8e78b7655 (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
[user]
  name = Anton Bobov
  email = anton@bobov.name
  signingkey = B4DCCEF7CE0E6AF3
[commit]
  gpgsign = true
[tag]
  gpgsign = true
[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
[difftool]
  prompt = false
[difftool "difftastic"]
  cmd = difft --background=light --color=always "$LOCAL" "$REMOTE"
[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
[log]
  decorate = short
  mailmap = true
[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
  dft = difftool --tool=difftastic
  dshow = "!f() { GIT_EXTERNAL_DIFF=difft DFT_BACKGROUND=light git show --ext-diff $@; }; f"
  dlog = "!f() { GIT_EXTERNAL_DIFF=difft DFT_BACKGROUND=light git log -p --ext-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
[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

# Allow pushing changes when working with a "read-only" remote from GitHub.
[url "git@github.com:"]
  pushInsteadOf = https://github.com/
  pushInsteadOf = git://github.com/