02 nov 2026 · ferramenta, git · 4 min
Ler diff do git com delta
O diff padrão do git mostra linhas com + e - em texto puro. O delta é um paginador que lê esse diff e devolve o mesmo conteúdo com realce de sintaxe, número de linha e, se quiser, duas colunas. Ele não substitui o git: é só o programa que o git chama para mostrar o diff. Veja também lazygit e bat para ler arquivos.
Instalar
# Debian/Ubuntu (pacote da comunidade pode atrasar)
sudo apt install git-delta
# ou binário direto
curl -LO https://github.com/dandavison/delta/releases/download/0.20.1/delta-0.20.1-x86_64-unknown-linux-musl.tar.gz
tar -xzf delta-0.20.1-x86_64-unknown-linux-musl.tar.gz
sudo install delta-0.20.1-x86_64-unknown-linux-musl/delta /usr/local/bin/delta
delta --version
A versão atual é 0.20.1 (publicada em 2026-10-04). É um binário único, sem runtime. O projeto é open source sob licença MIT e tem mais de 20 mil estrelas no GitHub.
O gitconfig
[core]
pager = delta
[interactive]
diffFilter = delta --color-only
[delta]
navigate = true
side-by-side = true
line-numbers = true
syntax-theme = Monokai Extended
[merge]
conflictstyle = diff3
pager = delta faz o git chamar o delta em vez do less. diffFilter aplica o delta também no git add -p. navigate = true permite pular de arquivo com n e N. side-by-side = true abre duas colunas. line-numbers mostra o número da linha dos dois lados. conflictstyle = diff3 mostra a base comum em conflitos de merge.
Três usos reais
git diffabre o diff formatado, com realce por linguagem e número de linha.git log -pusa o mesmo paginador, então o histórico também fica legível.git diff -- arquivo.pyrestringe a um arquivo; o navigate pula entre os hunks.
Atalhos dentro do delta
Com navigate = true, use n para o próximo arquivo e N para o anterior. Dentro do diff, as setas rolam linha a linha e espaço rola página. q sai do paginador. Esses atalhos vêm do less, então quem já usa less não aprende nada novo.
Quando não usar delta
Delta é um paginador, não um gerador de diff. Se a saída vai para um arquivo ou para outro programa, use git --no-pager diff ou git diff > mudancas.patch. Em scripts de CI, prefira o diff puro, que é estável e não depende de terminal. Para revisões rápidas no terminal, o delta brilha; para automação, ele só atrapalha.
Como verificar
git config --get core.pager
delta --version
git diff | delta --no-gitconfig | head
A primeira linha deve imprimir delta. A segunda, delta 0.20.1. A terceira mostra o diff com formatação, sem depender do gitconfig.
Se der errado
- Sem cor: o terminal não anuncia suporte a 24 bits. Rode
export COLORTERM=truecolorou troquesyntax-themepara um tema de 256 cores. - Colunas quebradas: terminal estreito. Desligue
side-by-side = trueou aumente a largura. - O git ignora o delta:
core.pagernão foi gravado ou a variávelPAGERsobrescreve. Confira comgit config --show-origin --get core.pager. - Caracteres estranhos em pipe: use
delta --no-gitconfigpara isolar o problema.
Comparação
| Ferramenta | Realce de sintaxe | Número de linha | Lado a lado | Instalação |
|---|---|---|---|---|
| git diff | não | não | não | já vem |
| delta | sim | sim | sim | binário único |
| diff-so-fancy | parcial | não | não | npm ou Perl |
FAQ
O delta altera o diff? Não. Ele só apresenta o mesmo diff com formatação. O conteúdo não muda.
Funciona com outros sistemas de versão? Sim. Ele lê diff unificado do stdin, então qualquer ferramenta que produza esse formato funciona.
O paginador deixa o terminal mais lento? Pouco. Um diff de 19 linhas (372 bytes) virou 24 linhas (1779 bytes) com a formatação do delta. A diferença de tempo de execução ficou abaixo do que dá para medir na mão.
Posso desligar o delta por um comando?
Sim. Use git --no-pager diff ou GIT_PAGER=cat git diff.
Posso usar delta com merge conflicts?
Sim. Com conflictstyle = diff3, o delta mostra a base comum e os dois lados do conflito com realce.
Delta funciona em terminal Windows? Sim, via WSL ou Git Bash. O binário nativo para Windows também existe na página de releases.
Posso mudar o tema de cores?
Sim. syntax-theme aceita nomes do bat; use delta --list-syntax-themes para ver as opções instaladas.
Fontes
#!/usr/bin/env bash
# delta: demonstra o gitconfig e confere a instalacao.
set -u
if ! command -v git >/dev/null 2>&1; then
echo "git nao encontrado; instale o git para rodar este roteiro"
exit 0
fi
W=$(mktemp -d)
cd "$W"
git init -q -b main
git config user.email "[email protected]"
git config user.name "demo"
printf 'def soma(a, b):\n return a + b\n' > calc.py
git add calc.py
git commit -q -m base
printf 'def soma(a, b):\n """Soma dois inteiros."""\n return a + b\n\ndef divide(a, b):\n return a / b\n' > calc.py
echo "=== git config sugerido ==="
cat <<'EOF'
[core]
pager = delta
[delta]
navigate = true
side-by-side = true
line-numbers = true
EOF
echo "=== diff puro ==="
git --no-pager diff
if command -v delta >/dev/null 2>&1; then
echo "=== com delta ==="
git --no-pager diff | delta --no-gitconfig
echo "delta instalado: $(delta --version)"
else
echo "delta nao instalado; siga a secao de instalacao"
fi
rm -rf "$W"
echo "fim"