>_ josetilabs.com
← blog

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

bash
# 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.

Terminal mostrando git config core.pager retornando delta e delta --version retornando 0.20.1
Delta instalado e configurado como paginador do git.

O gitconfig

ini
[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

  1. git diff abre o diff formatado, com realce por linguagem e número de linha.
  2. git log -p usa o mesmo paginador, então o histórico também fica legível.
  3. git diff -- arquivo.py restringe 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

bash
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

Gráfico de barras comparando 372 bytes do git diff com 1779 bytes da saída do delta
A formatação do delta custa bytes, mas o diff continua o mesmo.

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

bash
#!/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"

Leia também

// Por e-mail

Os textos publicados aqui também vão por e-mail. O envio ainda não começou: quem deixar o endereço agora entra na primeira lista.

Guardo só o seu e-mail, a data e o registro desta autorização. Sem cookies, sem rastreador e nada compartilhado com terceiros. Detalhes na política de privacidade.