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
# me
[user]
	email = alpha@kejadlen.dev
	name = Alpha Chen
	signingkey = ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINCttH8nEfk1uZ2291P4mbCoNcHxnr9iNBlbZckykeZ8

# remotes
[fetch]
	prune = true
	pruneTags = true
[pull]
	rebase = true
[push]
	default = current
	followTags = true
	recurseSubmodules = on-demand
	autoSetupRemote = true
[url "git@git.kejadlen.dev:"]
	insteadof = https://git.kejadlen.dev/
[url "git@github.com:"]
	insteadof = https://github.com/
# pi requires owner/repo-shaped git URLs; quire has no owner, so strip the dummy pkg/ segment.
[url "ssh://quire/"]
	insteadof = ssh://quire/pkg/
[transfer]
	fsckobjects = true

# ui
[color]
	ui = auto
	diff = true
[column]
	ui = auto
[advice]
	detachedHead = false

[core]
	autocrlf = false
	safecrlf = true
	quotepath = false
	sparecheckout = true
	editor = nvim
	fsmonitor = true
[alias]
	g = grep --break --heading --line-number
	standup = !git log --all --date=short --no-merges --pretty=format:\"%h %ad %s%d\" --since=1.weeks --author=`git config user.email`
	lol = log --graph --decorate --pretty=oneline --abbrev-commit
	lola = log --graph --decorate --pretty=oneline --abbrev-commit --all
	s = status --short --branch
	latest = for-each-ref --count=10 --sort=-committerdate --format='%(committerdate:relative) %(refname:short)'
	root = !pwd
	push-f = push --force-with-lease
	stsh = stash --keep-index --include-untracked
	staash = stash --include-untracked
	fix = commit --fixup @
	ctags = !.git/hooks/ctags
	lg = log --date=format:'%a %b %e, %Y' --pretty=format:'%C(yellow)%h%C(reset) %s %C(cyan)%cd%C(reset) %C(blue)%an%C(reset) %C(green)%d%C(reset)' --graph ; https://roadrunnertwice.dreamwidth.org/596185.html
	allbut = "!function fn { git push --force-with-lease origin $(git rev-parse HEAD~${1:-1}):$(git branch --show-current); }; fn"
[grep]
	extendRegexp = true
	lineNumber = true
[apply]
	whitespace = warn
[init]
	templatedir = ~/.git_templates
	defaultBranch = main
[tag]
	sort = version:refname
[rebase]
	autoStash = true
	autoSquash = true
	stat = true
	updateRefs = true
[interactive]
	singlekey = true
	; diffFilter = delta --color-only --features=interactive
[submodule]
	fetchJobs = 4
	recurse = true
[commit]
	verbose = true
	gpgsign = true
[filter "lfs"]
	process = git-lfs filter-process
	required = true
	clean = git-lfs clean -- %f
	smudge = git-lfs smudge -- %f
[advice]
	addEmptyPathspec = false
[rerere]
	enabled = true
	autoUpdate = true
[branch]
	autoSetupMerge = simple
	sort = -committerdate
[log]
	follow = true
	date = iso
[status]
	submoduleSummary = true

# diff things
[diff]
	algorithm = histogram
	external = difft
	; compactionHeuristic = true
	indentHeuristic = true
	colorMoved = dimmed-zebra
	submodule = log
	renames = copy
	mnemonicPrefix = true
[difftool]
	prompt = false

# merging
[merge]
	conflictstyle = zdiff3
	ff = false
	tool = vimdiff
[mergetool]
	keepBackup = false
[mergetool "vimdiff"]
	path = nvim
[mergetool "sourcetree"]
	cmd = /Applications/SourceTree.app/Contents/Resources/opendiff-w.sh \"$LOCAL\" \"$REMOTE\" -ancestor \"$BASE\" -merge \"$MERGED\"
	trustExitCode = true
[mergetool "kaleidoscope"]
	cmd = ksdiff --merge --output \"$MERGED\" --base \"$BASE\" -- \"$LOCAL\" --snapshot \"$REMOTE\" --snapshot
	trustExitCode = true

# signing commits with 1Password
[gpg]
	format = ssh
[gpg "ssh"]
	program = "/Applications/1Password.app/Contents/MacOS/op-ssh-sign"

[include]
	path = ~/.gitconfig.local
	path = config.local
[credential]
	helper = osxkeychain