Git Configuration ================= Git configuration with aliases, delta for diffs, and work/personal separation Date: February 7, 2026 Git configuration optimized for daily development with useful aliases, improved diff viewing, and separate configs for work and personal projects. ## Features - **Delta** - Syntax-highlighted diffs and pager - **Conditional includes** - Different configs for work vs personal - **Useful aliases** - Shortcuts for common operations - **Bat integration** - Better file viewing ## Setup ### Installation Git is typically pre-installed. For latest version: ```bash # Ubuntu/Debian sudo apt install git # Arch Linux sudo pacman -S git # Via mise mise install git ``` ### Configuration Main config at `~/.gitconfig`: ```bash [user] name = Waylon S. Walker email = waylon@waylonwalker.com signingkey = 66E2BF2B4190EFE4 [core] editor = nvim -c startinsert excludesfile = ~/.global-gitignore pager = bat --style=plain ``` ## Conditional Includes Different configurations for different directories: ```bash [includeIf "gitdir:~/work/"] path = ~/.gitconfig-work [includeIf "gitdir:~/git/"] path = ~/.gitconfig-git ``` Example `~/.gitconfig-work`: ```bash [user] email = waylon@company.com name = Waylon Walker ``` ## Key Settings ### Editor Opens nvim in insert mode for commit messages: ```bash editor = nvim -c startinsert ``` ### Pager Uses bat for better output: ```bash pager = bat --style=plain diff = bat --plain ``` ### Autocorrect Automatically fix typos after 1 second: ```bash [help] autocorrect = 10 ``` ## Aliases ### squash-all Squash entire branch history into single commit: ```bash git squash-all "Initial commit" ``` Implementation: ```bash squash-all = "!f(){ git reset $(git commit-tree HEAD^{tree} -m \"${1:-A new start}\");};f" ``` ### restage Restage already-staged files: ```bash restage = !git diff --name-only --cached | xargs git add ``` ## Credentials Uses GitHub CLI for authentication: ```bash [credential "https://github.com"] helper = helper = !gh auth git-credential [credential] helper = store ``` ## Delta Integration Delta provides syntax highlighting for diffs: ```bash [pager] diff = delta log = delta reflog = delta show = delta [delta] features = side-by-side line-numbers decorations syntax-theme = Dracula ``` ## Default Behaviors ```bash [init] defaultBranch = main [push] default = current [pull] rebase = true [rebase] autoStash = true [commit] gpgsign = false ``` ## Global Gitignore A `~/.global-gitignore` file excludes files across all repos: ```bash # IDE .idea/ .vscode/ *.swp *~ # OS .DS_Store Thumbs.db # Temporary *.log *.tmp .env.local ``` ## Workflows ### Starting a New Project ```bash # Personal project cd ~/git/new-project git init git add . git commit -m "Initial commit" # Work project (uses work email automatically) cd ~/work/company-project git init git add . git commit -m "Initial commit" ``` ### Cleaning Up History ```bash # Squash everything to one commit git squash-all "Clean history" # Push with force git push --force-with-lease ``` ## See Also <div class="embed-card"> <a href="/lazygit/" class="embed-card-link"> <div class="embed-card-content"> <div class="embed-card-title">Lazygit</div> <div class="embed-card-description">Lazygit - a simple terminal UI for git commands</div> <div class="embed-card-meta">Feb 7, 2026</div> </div> </a> </div> <div class="embed-card"> <a href="/gitui/" class="embed-card-link"> <div class="embed-card-content"> <div class="embed-card-title">gitui</div> <div class="embed-card-description">gitui - a blazing-fast terminal UI for git</div> <div class="embed-card-meta">Feb 7, 2026</div> </div> </a> </div> <div class="embed-card"> <a href="/delta/" class="embed-card-link"> <div class="embed-card-content"> <div class="embed-card-title">Delta</div> <div class="embed-card-description">Delta - syntax-highlighting pager for git and diff output</div> <div class="embed-card-meta">Feb 7, 2026</div> </div> </a> </div> <div class="embed-card"> <a href="/gh/" class="embed-card-link"> <div class="embed-card-content"> <div class="embed-card-title">GitHub CLI</div> <div class="embed-card-description">GitHub CLI - a command-line tool for GitHub</div> <div class="embed-card-meta">Feb 7, 2026</div> </div> </a> </div> <div class="embed-card embed-card-external"> <a href="https://git-scm.com/doc" class="embed-card-link" target="_blank" rel="noopener noreferrer"> <div class="embed-card-content"> <div class="embed-card-title">Redirecting…</div> <div class="embed-card-meta">git-scm.com</div> </div> </a> </div> <div class="embed-card embed-card-external"> <a href="https://github.com/dandavison/delta" class="embed-card-link" target="_blank" rel="noopener noreferrer"> <div class="embed-card-image"> <img src="https://opengraph.githubassets.com/06ca61f976050db0d8f65c6c003945e879c93aad4d3cf1f1f691a45ab4e4a3c1/dandavison/delta" alt="" loading="lazy"> </div> <div class="embed-card-content"> <div class="embed-card-title">GitHub - dandavison/delta: A syntax-highlighting pager for git, diff, grep, and blame output</div> <div class="embed-card-description">A syntax-highlighting pager for git, diff, grep, and blame output - dandavison/delta</div> <div class="embed-card-meta">GitHub &middot; github.com</div> </div> </a> </div>