[include]
	path = ~/.gitconfig-user

[core]
	; Git sets `$LESS` to `FRX` if it's not already set. `X` disables
	; sending termcap initialization and deinitialization strings to the
	; terminal, which leaves (potentially log) text on the screen and
	; disables mouse scrolling.
	pager = less -+X
	hooksPath      = ~/.githooks
	excludesFile   = ~/.gitignore
	attributesFile = ~/.gitattributes

[init]
	templateDir = ~/.gittemplate
	defaultBranch = master
	; defaultBranch = main

[remote]
	pushDefault = origin

[push]
	default = current
	recurseSubmodules = check

[branch]
	autoSetupMerge  = always
	autoSetupRebase = always

[fetch]
	prune     = true
	pruneTags = true

[rebase]
	autoSquash = true
	autoStash  = true
	updateRefs = true
	missingCommitsCheck = error

[pull]
	rebase = merges

[merge]
	ff = false
	autoStash = true
	conflictStyle = diff3

[am]
	threeWay = true

[rerere]
	enabled = true

[diff]
	renames   = copies
	algorithm = histogram

[url "ssh://git@"]
	pushInsteadOf = https://

[protocol]
	allow = never

[protocol "file"]
	allow = always

[protocol "ssh"]
	allow = always

[protocol "https"]
	allow = always

[transfer]
	fsckObjects = true

[fsck]
	zeroPaddedFilemode = warn
	badTimezone        = warn

[receive "fsck"]
	zeroPaddedFilemode = warn
	badTimezone        = warn

[fetch "fsck"]
	zeroPaddedFilemode = warn
	badTimezone        = warn

[notes]
	rewriteRef = refs/notes/commits

[format]
	notes = true

[status]
	showStash = true
	submoduleSummary = true

[log]
	abbrevCommit = true
	decorate = short

[log]
	date = relative

[blame]
	date = relative

[log]
	graphColors = \
	  BrightRed, \
	  BrightGreen, \
	  BrightYellow, \
	  BrightBlue, \
	  BrightMagenta, \
	  BrightCyan

[diff]
	colorMoved   = zebra
	colorMovedWS = ignore-space-change

[color "diff"]
	meta                      = BrightBlue
	frag                      =       Blue
	func                      =       Blue
	commit                    = BrightYellow
	whitespace                = BrightRed
	plain                     =       Yellow
	context                   = BrightWhite
	contextBold               = BrightWhite
	contextDimmed             =       White
	old                       = BrightRed
	oldBold                   = BrightRed
	oldDimmed                 =       Red
	new                       = BrightGreen
	newBold                   = BrightGreen
	newDimmed                 =       Green
	oldMoved                  = BrightMagenta
	oldMovedDimmed            =       Magenta
	oldMovedAlternative       =       Magenta
	oldMovedAlternativeDimmed =       Magenta
	newMoved                  = BrightCyan
	newMovedDimmed            =       Cyan
	newMovedAlternative       =       Cyan
	newMovedAlternativeDimmed =       Cyan

[blame]
	coloring = repeatedLines
	; coloring = highlightRecent

[color "blame"]
	repeatedLines = White
	highlightRecent = \
	  245, 1  years ago, \
	  246, 6 months ago, \
	  247, 5 months ago, \
	  248, 4 months ago, \
	  249, 3 months ago, \
	  250, 2 months ago, \
	  251, 4  weeks ago, \
	  252, 3  weeks ago, \
	  253, 2  weeks ago, \
	  254, 1  weeks ago, \
	  255

[absorb]
	; https://github.com/tummychow/git-absorb
	maxStack = 100