# ~/.gitconfig
# Global Git configuration with multiple identities
# Profile-specific configs are included based on repo location
# ============================================================================
# DEFAULT IDENTITY (fallback)
# ============================================================================
[user]
name = Kris Yotam
email = krisyotam@protonmail.com
signingkey = ~/.ssh/id_ed25519.pub
# ============================================================================
# PROFILE INCLUDES (directory-based identity switching)
# ============================================================================
# Personal projects (krisyotam identity)
[includeIf "gitdir:~/dev/personal/"]
path = ~/.config/git/profiles/krisyotam
# Pentesting/security projects (khr1st identity)
[includeIf "gitdir:~/dev/security/"]
path = ~/.config/git/profiles/khr1st
# Work projects (laelyotam identity)
[includeIf "gitdir:~/dev/work/"]
path = ~/.config/git/profiles/laelyotam
# Dotfiles repo uses personal identity
[includeIf "gitdir:~/dev/krisrice/"]
path = ~/.config/git/profiles/krisyotam
# ============================================================================
# CORE SETTINGS
# ============================================================================
[core]
editor = nvim
pager = delta
autocrlf = input
whitespace = fix,-indent-with-non-tab,trailing-space,cr-at-eol
[init]
defaultBranch = main
[pull]
rebase = true
[push]
default = current
autoSetupRemote = true
[fetch]
prune = true
[rebase]
autoStash = true
# ============================================================================
# DELTA PAGER (Tokyo Night theme)
# ============================================================================
[interactive]
diffFilter = delta --color-only
[delta]
navigate = true
side-by-side = true
line-numbers = true
syntax-theme = tokyonight_night
minus-style = syntax "#3f2d3d"
minus-non-emph-style = syntax "#3f2d3d"
minus-emph-style = syntax "#763842"
minus-empty-line-marker-style = syntax "#3f2d3d"
line-numbers-minus-style = "#f7768e"
plus-style = syntax "#283b4d"
plus-non-emph-style = syntax "#283b4d"
plus-emph-style = syntax "#316172"
plus-empty-line-marker-style = syntax "#283b4d"
line-numbers-plus-style = "#9ece6a"
line-numbers-zero-style = "#565f89"
# ============================================================================
# DIFF & MERGE
# ============================================================================
[color]
ui = auto
[merge]
conflictstyle = diff3
tool = nvim
[mergetool "nvim"]
cmd = nvim -d $LOCAL $MERGED $REMOTE
[diff]
colorMoved = default
tool = nvim
[difftool "nvim"]
cmd = nvim -d $LOCAL $REMOTE
# ============================================================================
# COMMIT SIGNING (SSH keys)
# ============================================================================
[commit]
gpgsign = true
[gpg]
format = ssh
[gpg "ssh"]
allowedSignersFile = ~/.config/git/allowed_signers
# ============================================================================
# ALIASES
# ============================================================================
[alias]
# Status & Info
st = status -sb
lg = log --oneline --graph --decorate --all
ll = log --pretty=format:'%C(yellow)%h%Creset %s %C(cyan)<%an>%Creset %C(green)(%cr)%Creset' --abbrev-commit
last = log -1 HEAD --stat
# Branching
co = checkout
br = branch -v
bra = branch -av
# Committing
ci = commit
ca = commit --amend
can = commit --amend --no-edit
# Diff
df = diff
dfs = diff --staged
# Stash
sl = stash list
sp = stash pop
ss = stash save
# Remote
rv = remote -v
# Push to all mirrors (uses pushall script or multiple pushurls)
pa = !git remote | xargs -L1 git push --all
pushall = !git remote | xargs -L1 git push --all
# Quick sync
sync = !git pull --rebase && git push
# Undo
unstage = reset HEAD --
undo = reset --soft HEAD~1
# Cleanup
cleanup = !git branch --merged | grep -v '\\*\\|main\\|master' | xargs -n 1 git branch -d
# ============================================================================
# URL SHORTCUTS
# ============================================================================
[url "git@github.com:"]
insteadOf = gh:
[url "git@git.krisyotam.com:"]
insteadOf = ky:
[url "git@codeberg.org:"]
insteadOf = cb:
[url "git@git.sr.ht:"]
insteadOf = sr:
[url "git@gitlab.com:"]
insteadOf = gl: