# vim: ft=gitconfig ai noexpandtab
[credential]
	helper = store --file ~/.cache/git/git-credentials
	helper = cache --timeout 30000

[core]
	excludesfile = ~/.config/git/ignore

[init]
	defaultBranch = main

[pull]
	rebase = true

[alias]
	branchbydate = for-each-ref --count=30 --sort=-committerdate refs/heads/ --format='%(refname:short)'
	branchcolor = "!for ref in $(git for-each-ref --sort=-committerdate --format=\"%(refname)\" refs/heads/ refs/remotes ); do git log -n1 $ref --pretty=format:\"%Cgreen%cr%Creset %C(yellow)%d%Creset %C(bold blue)<%an>%Creset%n\" | cat ; done | awk '! a[$0]++'"
	llog = log --pretty=fuller
	logs = log --graph --pretty=format:'%C(magenta)%h%Creset -%C(red)%d%Creset %s %C(dim green)(%cr) %C(cyan)<%an>%Creset' --abbrev-commit
	nah = !git reset --hard && git clean -df
	recent = "!r() { count=$1; git for-each-ref --sort=-committerdate refs/heads --format='%(HEAD)%(color:yellow)%(refname:short)|%(color:bold green)%(committerdate:relative)|%(color:blue)%(subject)|%(color:magenta)%(authorname)%(color:reset)' --color=always --count=${count:=10} | column -ts'|';}; r"
	reset-origin = !git fetch origin && git reset --hard origin/master && git clean -f -d
	reset-upstream = !git fetch upstream && git reset --hard upstream/master && git clean -f -d
	rl = reflog --format='%C(auto)%h %<|(20)%gd %C(blue)%cr%C(reset) %gs (%s)'
	tagdate = log --date-order --graph --tags --simplify-by-decoration --pretty=format:\"%ai %h %d\"
	undo = reset --soft HEAD^
	undo-commit = reset HEAD~ --soft

[filter "lfs"]
	clean = git-lfs clean -- %f
	smudge = git-lfs smudge -- %f
	process = git-lfs filter-process
	required = true

[color]
	ui = true
	diff = auto
	branch = auto
	status = auto

[color "status"]
	added = green bold
	changed = yellow
	deleted = red bold strike
	untracked = cyan
	branch = yellow black bold ul

[submodule]
	recurse = true

# dotfiles special config
[includeIf "hasconfig:remote.*.url:https://github.com/ivuorinen/dotfiles.git"]
	path = ~/.dotfiles/config/git/special/dotfiles ;

