aboutsummaryrefslogtreecommitdiff
path: root/files/.gitconfig
blob: 0b2acc1608286c8aa7429cb1581e2cc13110f826 (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
[user]
    name = Anton Bobov
    email = anton@bobov.name
[http]
    sslVerify = false
[color "diff-highlight"]
    oldNormal = red bold
    oldHighlight = red bold reverse
    newNormal = "#009900" bold
    newHighlight = "#009900" bold reverse
[color "diff"]
    meta = 11
    frag = magenta bold
    commit = yellow bold
    old = red bold
    new = green bold
    whitespace = red reverse
[diff]
    tool = vimdiff
[difftool]
    prompt = false
[diff-so-fancy]
    stripLeadingSymbols = false
    markEmptyLines = false
[grep]
    lineNumber = true
[merge]
    conflictstyle = diff3
    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
    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
    fix = commit --amend -C HEAD
    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

    # 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'|'"

[advice]
    statusHints = false
    detachedHead = false
[branch]
    autosetupmerge = always
    autosetuprebase = local
    sort = authordate
[rebase]
    instructionFormat = %s [%an] {%ar}
    autoStash = true
[rerere]
    enabled = true
[status]
    submoduleSummary = true
[help]
    autocorrect = 10
[credential]
    helper = netrc
[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
[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

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