-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathprivate_dot_gitconfig
More file actions
157 lines (133 loc) · 5.53 KB
/
Copy pathprivate_dot_gitconfig
File metadata and controls
157 lines (133 loc) · 5.53 KB
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]
name = Richard Mathieson
email = 35163478+rlch@users.noreply.github.com
; Standalone signing key — passphrase-less Ed25519 sitting behind
; FileVault + macOS login. Path form (not literal pubkey): tells git
; to drive `ssh-keygen -Y sign` directly off this file rather than
; probing whichever ssh-agent SSH_AUTH_SOCK points at (which is
; 1Password's, where this key isn't loaded). Verification keeps the
; "Verified" badge on GitHub once the matching .pub is uploaded as a
; Signing Key. No Touch ID prompt per commit.
signingkey = ~/.ssh/git_signing.pub
[gpg]
format = ssh
[gpg "ssh"]
; Empty/unset `program` makes git use system `ssh-keygen -Y sign`,
; bypassing 1Password's op-ssh-sign and its biometric prompt entirely.
allowedSignersFile = ~/.config/git/allowed_signers
[commit]
gpgsign = true
verbose = true ; show the full diff in the commit-message editor
; revdiff isn't a stdin pager — it generates diffs from refs itself, so
; we don't wire pager.diff/show. delta stays as the streaming pager for
; commands like `git log -p` and as the diffFilter for `git add -p`.
[pager]
log = delta
reflog = delta
[delta]
features = catppuccin-mocha decorations
navigate = true
line-numbers = true
[delta "catppuccin-mocha"]
syntax-theme = Catppuccin Mocha
minus-style = syntax "#3e1e26"
minus-emph-style = syntax "#5a2a35"
plus-style = syntax "#1e3528"
plus-emph-style = syntax "#2a5238"
[delta "decorations"]
true-color = always
relative-paths = true
whitespace-error-style = "#1e1e2e" reverse "#f38ba8"
file-style = bold "#89b4fa"
file-decoration-style = "#45475a" ul
file-modified-label = ""
file-added-label = ""
file-removed-label = ""
file-renamed-label = ""
hunk-header-style = syntax
hunk-header-decoration-style = "#585b70" ul
hunk-header-file-style = "#cdd6f4"
hunk-header-line-number-style = "#89b4fa"
hunk-label = ""
[interactive]
diffFilter = delta --color-only --paging=never
[diff]
colorMoved = default
colorMovedWS = allow-indentation-change ; don't flag pure re-indents as moved code
algorithm = histogram
; difftastic as an ON-DEMAND structural diff (`git dft`). diff.tool only
; affects `git difftool`, NOT `git diff` — delta stays the pager/diffFilter.
tool = difftastic
[difftool]
prompt = false
[difftool "difftastic"]
cmd = difft "$LOCAL" "$REMOTE"
[alias]
dft = difftool
; git-absorb: stage the review fixes (`git add -p`), then `git ab` creates the
; fixup! commits against the right ancestors AND rebases them in, one shot.
; Pairs with rebase.autoSquash/autoStash above. Use bare `git absorb` first if
; you'd rather inspect the fixups before rebasing.
ab = absorb --and-rebase
; absorb across the whole stack down to <base> (default main). --base ignores
; absorb.maxStack, so it's the right tool for deep stacks. `git abm` or `git abm <base>`.
abm = "!f() { git absorb --base \"${1:-main}\" --and-rebase; }; f"
; force-push a rewritten stack safely (lease + refuse if local lacks the remote tip).
pf = push --force-with-lease --force-if-includes
[absorb]
; one fixup commit per target (not per hunk) — cleaner pre-rebase history
oneFixupPerCommit = true
; bare `git absorb`/`git ab` only scan this many commits back from HEAD. 10 is too
; low for stacked PRs (it warns + drops hunks — never mis-attributes). 50 covers any
; human stack; for deeper work use `git abm <base>`, which ignores this limit.
maxStack = 50
autoStageIfNothingStaged = true ; nothing staged → stage all, fixup, re-unstage leftovers
fixupTargetAlwaysSHA = true ; fixup subjects reference the target SHA (unambiguous)
; --- rebase-heavy + stacked-branch workflow ---
[rebase]
; rebasing the tip of a PR stack onto main fixes up every intermediate
; branch in one shot — no manual double-rebase.
updateRefs = true
autoStash = true
autoSquash = true
missingCommitsCheck = error ; abort an interactive rebase whose todo drops a commit
[rerere]
; reuse recorded conflict resolutions — resolve a recurring rebase
; conflict once per chain, not once per rebase.
enabled = true
autoUpdate = true
[merge]
; 3-way conflict markers that show the common ancestor — far easier rebase
; conflict resolution, and gives rerere better resolutions to record.
conflictStyle = zdiff3
[pull]
rebase = true ; pull always rebases (never an accidental merge commit)
[init]
defaultBranch = main
[help]
autocorrect = prompt ; typo'd subcommand → confirm before running (never auto-runs)
[push]
autoSetupRemote = true ; `git push` on a new branch just works (no --set-upstream)
followTags = true
useForceIfIncludes = true ; --force-with-lease also refuses if local lacks the remote tip
[fetch]
prune = true ; auto-drop local refs for branches deleted upstream (feeds clean_gone)
pruneTags = true
[branch]
sort = -committerdate ; `git branch` lists most-recently-worked first
[tag]
sort = -version:refname ; tags sort as versions (v1.10 after v1.9)
[column]
ui = auto ; tidy columns for branch/status listings
; Written by `git lfs install`. Captured here so chezmoi apply doesn't strip it.
[filter "lfs"]
required = true
clean = git-lfs clean -- %f
smudge = git-lfs smudge -- %f
process = git-lfs filter-process
; Machine-local, NON-chezmoi-managed git config. Holds per-host/per-repo runtime
; state that must NOT live in the portable source — notably `git maintenance`'s
; absolute `[maintenance] repo = …` paths (per-machine; pollutes other hosts).
; git silently ignores this include if the file is absent (e.g. a fresh host).
[include]
path = ~/.gitconfig.local