aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/dot_config/git/config
blob: cc4959e0c4e7e501e8fe379de557fcc514b22cbc (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
[user]
    email = sommerfeld@sommerfeld.dev
    name = sommerfeld
    signingkey = 3298945F717C85F8
[push]
    autoSetupRemote = true
    followTags = true
    gpgSign = if-asked
[core]
    whitespace = trailing-space,cr-at-eol
    pager = delta
    hooksPath = ~/.config/git/hooks
[branch]
    sort=-committerdate
[diff]
    tool = nvimdiff
    algorithm = histogram
    colorMoved = default
    colorMovedWS = allow-indentation-change
    mnemonicPrefix = true
    relative = true
    renameLimit = 10000
[difftool]
    prompt = false
    trustExitCode = true
[pager]
    difftool = true
[difftool "nvimdiff"]
    cmd = $EDITOR -d $LOCAL $REMOTE
[difftool "difftastic"]
    cmd = difft "$MERGED" "$LOCAL" "abcdef1" "100644" "$REMOTE" "abcdef2" "100644"
[rebase]
    autoStash = true
    autoSquash = true
    updateRefs = true
[fetch]
    recurseSubmodules = on-demand
    prune = true
[rerere]
    enabled = true
[pull]
    ff = only
[merge]
    tool = conflictmarker
    conflictstyle = zdiff3
[merge "mergiraf"]
    name = mergiraf
    driver = mergiraf merge --git %O %A %B -s %S -x %X -y %Y -p %P
[mergetool]
    keepBackup = false
[mergetool "conflictmarker"]
    cmd = $EDITOR "$MERGED"
[commit]
    gpgsign = true
[tag]
    gpgSign = true
[status]
    short = true
    branch = true
    showUntrackedFiles = all
    showStash = true
    submoduleSummary = true
[help]
    autocorrect = prompt
[log]
    abbrevCommit = true
    date = short
[interactive]
    singleKey = true
    diffFilter = delta --color-only
[advice]
    detachedHead = false
    skippedCherryPicks = false
[column]
    ui = auto
[format]
    pretty = oneline
[delta]
    navigate = true
    features = gruvmax-fang zebra-dark
    dark = true
    side-by-side = true
    line-numbers = true
    relative-paths = true
    hyperlinks = true
[absorb]
    autoStageIfNothingStaged = true
[alias]
    resign = "!git -c core.hooksPath=/dev/null rebase @{u} --exec 'git log -1 --format=%B | sed \"/^Co-authored-by:/Id\" | git -c core.hooksPath=/dev/null commit --amend --reset-author --no-verify --cleanup=strip -F -'"
    ghost-rebase = "!sh -c 'b=$0; u=${1:-origin/master}; wt=$(mktemp -d -t rebwt.XXXXXX); git worktree add -f "$wt" "$b"; git -C "$wt" rebase "$u" || echo "Rebase incomplete"; git worktree remove --force "$wt"'"
    a = add
    ab=absorb --and-rebase
    b = branch -vv
    bd = branch -D
    c = commit
    ca = commit --amend --no-edit
    cp = cherry-pick
    d = diff
    dft = -c diff.external=difft diff
    dl = -c diff.external=difft log -p --ext-diff
    ds = -c diff.external=difft show --ext-diff
    dt = difftool
    f = fetch
    fa = fetch --all
    ff = merge --ff-only
    find-merge = "!sh -c 'commit=$0 && branch=${1:-HEAD} && (git rev-list $commit..$branch --ancestry-path | cat -n; git rev-list $commit..$branch --first-parent | cat -n) | sort -k2 -s | uniq -f1 -d | sort -n | tail -1 | cut -f2'"
    fmt = clang-format -f
    fp = push --force-with-lease
    gone = !git for-each-ref --format '%(refname:short) %(upstream:track)' | awk '$2 == \"[gone]\" {print $1}' | xargs -r git branch -D
    l = log
    lg = log --graph --oneline
    lm = log --pretty=medium
    m = merge
    mt = mergetool
    p = push
    r = rebase
    re = remote -v
    ri = rebase -i
    rt = restore
    s = status
    st = status --no-short
    staged = diff --cached
    sub = submodule
    subf = submodule foreach
    sw = switch
    swc = switch -c
    swd = switch -d
    unstage = reset HEAD --
    update=!git fetch && git merge --ff-only
[includeIf "gitdir:/home/*/work/"]
    path = config-work
[includeIf "gitdir:/home/swuser/"]
    path = config-work
[includeIf "gitdir:~/doxfiles/.git"]
    path = config-personal
[includeIf "gitdir:~/dev/copilot/.git"]
    path = config-personal
[includeIf "gitdir:~/dev/personal/"]
    path = config-personal
[sendemail]
    smtpServer = 127.0.0.1
    smtpServerPort = 1025
    smtpEncryption = tls
    smtpDomain = localhost
    smtpSslCertPath =
    confirm = auto
    suppresscc = self
    chainReplyTo = false
    thread = true
    annotate = true
    assume8bitEncoding = UTF-8
[credential "smtp://127.0.0.1:1025"]
    helper = "!f() { test \"$1\" = get && printf 'password=%s\\n' \"$(pass show proton/bridge-smtp)\"; }; f"
[include]
    ; Machine-local overrides (e.g. SSH-format signing on the remote-dev VM).
    ; Git silently skips this if the file is absent.
    path = ~/.config/git/config.local