aboutsummaryrefslogtreecommitdiff
path: root/files/.gitconfig
blob: ce37bc4d105b2487b9c436ccae3e12fd22f92f77 (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
[user]
    name = Anton Bobov
    email = abobov@gmail.com
[http]
    sslVerify = false
[color]
    ui = auto
[diff]
    tool = vimdiff
[difftool]
    prompt = false
[grep]
    lineNumber = true
[merge]
    conflictstyle = diff3
    stat = true
    tool = vimdiff
[core]
    pager = less -+$LESS -FRX
    excludesfile = ~/.gitignore
    quotepath = false
[log]
    decorate = short
[alias]
    aa = add --all --intent-to-add
    ar = !sh -c 'git archive --format=tar --prefix="$(basename "$PWD")-$1/" $1^{tree} | bzip2 >"$(basename "$PWD")-$1.tar.bz2"' -
    br = branch --sort=-committerdate
    c = commit --verbose
    co = checkout
    ci = commit
    diffstat = diff --stat -r
    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"
    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'

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

[advice]
    statusHints = false
    detachedHead = false
[branch]
    autosetupmerge = always
    autosetuprebase = local
[rebase]
    instructionFormat = %s [%an] {%ar}
[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/