delta: git diffs You Can Actually Read

git diff is correct. It is also how eyes go to die at 1am. delta is the pager that makes the patch human again.

delta (package name git-delta on most systems) is a syntax-highlighting pager for git and diff output. Line-oriented unified diffs become structured: file headers, hunks, word-level emphasis, and optional side-by-side. You do not change your git workflow — you change what your eyes receive when git talks. Two config lines and every git diff, show, log -p, and add -p review gets clearer. It plays nicely with lazygit and plain CLI alike.

install

macOS
# macOS
brew install git-delta
Debian/Ubuntu
# Debian/Ubuntu
sudo apt install git-delta
Fedora
# Fedora
sudo dnf install git-delta
Arch
# Arch
sudo pacman -S git-delta

examples

# One-shot: page a single command through delta
git -c core.pager=delta log -1 --stat
# Make it permanent in ~/.gitconfig
git config --global core.pager delta
git config --global interactive.diffFilter 'delta --color-only'
git config --global delta.navigate true
git config --global delta.line-numbers true
# Side-by-side when the terminal is wide enough
git config --global delta.side-by-side true
# Diff two branches the way your brain expects
git diff main...HEAD | delta
# Works on plain diff too
diff -u old.conf new.conf | delta 

pro tip

navigate true lets you jump files inside a multi-file diff with n/N — once you have it, bare less feels broken. If colors clash with your theme, delta themes= and catppuccin/one-dark ports exist; start with defaults before theming rabbit holes.

honest limits

delta is a pager, not a merge tool — conflicts still need mergetool/vimdiff/vscode. Huge binary-ish diffs or generated lockfiles will still hurt; path exclude in git attributes helps more than any pager. Side-by-side needs width; on a 80-col SSH session stick to unified. And never set core.pager=delta on a machine where colleagues parse git output in CI — scope it to your interactive global config, not the shared repo.