[alias]
    # list aliases
    aliases = !git config --get-regexp 'alias.*' | colrm 1 6 | sed 's/[ ]/ = /' | sort
    bdm = "!git branch --merged | grep -v '*' | xargs -n 1 git branch -d"
    default-branch = "!git symbolic-ref refs/remotes/origin/HEAD | cut -d'/' -f4"
    lg = log --graph --pretty=tformat:'%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%an %ar)%Creset'
    lg2 = log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold cyan)%aD%C(reset) %C(bold green)(%ar)%C(reset)%C(bold yellow)%d%C(reset)%n' %C(white)%s%C(reset) %C(dim white)- %an%C(reset)' --all
    lastchange = log -p --follow -n 1
    plog = log --graph --pretty='format:%C(red)%d%C(reset) %C(yellow)%h%C(reset) %ar %C(green)%aN%C(reset) %s'
    rank = shortlog -sn --no-merges
    st = status -sb
    tlog = log --stat --since='1 Day Ago' --graph --pretty=oneline --abbrev-commit --date=relative

[apply]
    # Detect whitespace errors when applying a patch
    whitespace = fix

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

[gpg]
    # Use OpenSSH to sign commits/tags/etc
    format = ssh

[gpg "ssh"]
    allowedSignersFile = ~/.ssh/allowed_signers

[help]
    # Automatically correct typos in commands
    autoCorrect = prompt

[pull]
    ff = only

[core]
    pager = delta --side-by-side --width ${FZF_PREVIEW_COLUMNS-$COLUMNS}

[interactive]
    diffFilter = delta --color-only

[delta]
    # use n and N to move between diff sections
    navigate = true
    side-by-side = true
    hyperlinks = true
    hyperlinks-file-link-format = "idea://open?file={path}&line={line}"

[merge]
    conflictstyle = zdiff3

[diff]
    algorithm = histogram
    colorMoved = plain
    mnemonicPrefix = true
    renames = true

[tar "tar.xz"]
    command = xz -c

[tar "tar.zst"]
    command = zstd -T0 -c

[init]
    defaultBranch = main

[column]
    ui = auto

[branch]
    sort = -committerdate

[tag]
    sort = version:refname

[rerere]
    enabled = true
    autoupdate = true

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