[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" # Reads origin's cached HEAD, which `git sync` and remote.origin.followRemoteHEAD # below keep pointing at whatever the server currently calls its default. # --short over cut -d/ -f4, which mangles names like release/1.0. default-branch = "!git symbolic-ref --short refs/remotes/origin/HEAD | sed 's|^origin/||'" 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 # `git sync` is not here - it is bin/git-sync, on the $PATH, which git picks # up as a subcommand. `git aliases` above will not list it. 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 [remote "origin"] # refs/remotes/origin/HEAD is written once at clone time, and the default # `create` only fills it in when missing - so a default branch renamed on the # server (main -> totara-20) leaves every tool reading that ref pointing at a # branch that may not even exist. `always` re-points it on each fetch, off the # ref advertisement that fetch already receives, so it costs no extra round # trip. Only applies to remotes actually named origin. # # Side effect: git conjures a remote from the existence of any remote..* # key, so this makes `git remote` list a URL-less origin in every repo that # has not got one - this repo included. Nothing breaks (`git remote get-url # origin` still says No such remote, which is what the scripts test), but do # not read that listing as evidence a real origin exists. followRemoteHEAD = always [core] pager = delta --side-by-side --width ${FZF_PREVIEW_COLUMNS-$COLUMNS} [interactive] diffFilter = delta --color-only [include] path = ~/.config/delta/themes.gitconfig [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}" #features = weeping-willow [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 # Machine-local identity and signing config. Untracked, and included last so # it wins over anything above. Keeps `bootstrap.sh`'s copy of this file # non-destructive without needing to re-apply values on every shell startup. [include] path = ~/.gitconfig.local