53 ferramentas de desenvolvimento, sempre atualizadas — cada nova versão upstream chega ao apt em poucas horas. Entre no Discord

📅 A partir de , o mirror apt exigirá uma assinatura. Ver preços · 🆓 Existe um espelho grátis para sempre

🔀 Instalar o difftastic mais recente no Ubuntu

Uma ferramenta de diff estrutural que compara por sintaxe, não linha por linha

Última versão: 0.70.0 · atualizado em 2026-08-18
FonteVersão
deb.griffo.io0.70.0 ✅
Ubuntu oficial🚫 não empacotado
← Voltar ao início

O que é o difftastic?

O difftastic — o comando é difft — é uma ferramenta de diff estrutural. Em vez de comparar linhas, ele analisa os dois arquivos com tree-sitter, monta uma árvore de sintaxe para cada lado e informa quais trechos de sintaxe realmente mudaram. Reindentar um bloco, requebrar uma lista de argumentos ou mover uma chave deixa de ser mudança, enquanto uma variável renomeada em meio a código reformatado salta aos olhos.

🚀 Por que a versão mais recente importa: o difftastic entende seu código pelas gramáticas do tree-sitter, e elas vêm junto com cada lançamento. Uma build de um ano atrás analisa as linguagens do ano passado: a sintaxe nova vira erro de parsing, e um arquivo com erros demais cai silenciosamente para um diff por linhas — exatamente o que você quis evitar instalando o difftastic. Cada lançamento também melhora o algoritmo e o uso de memória em arquivos grandes.

⚡ Principais recursos do difftastic

🌳 Diffs que entendem sintaxe

Os dois lados são transformados em árvores de sintaxe e comparados como estrutura: o ruído de formatação desaparece e as mudanças reais aparecem.

🧩 Mais de 30 linguagens

Rust, Python, TypeScript, Go, C, C++, Java, Ruby, YAML, JSON, HTML, CSS, Markdown e muitas outras — difft --list-languages mostra a lista completa com as extensões.

🪟 Lado a lado ou em linha

--display escolhe side-by-side, side-by-side-show-both, inline ou JSON legível por máquina.

🔗 Substituto direto no Git

Funciona como comando de diff externo do git e igualmente bem no Mercurial, Jujutsu e Fossil.

🚦 Recuo honesto

Extensão desconhecida, arquivo enorme ou erros de parsing em excesso: ele recua para um diff por linhas com destaque por palavras, em vez de falhar.

🗂️ Diretórios e conflitos

Compare dois diretórios num comando, ou entregue um arquivo cheio de marcadores de conflito de merge e leia o conflito como um diff.

🚀 Sempre à frente dos arquivos oficiais: Debian e Ubuntu congelam as versões dos pacotes quando lançam uma release — este repositório publica novas versões upstream normalmente em poucas horas. Um simples apt upgrade mantém você na versão mais recente.

📦 Instalação a partir do deb.griffo.io

Executar os comandos

Passo 1: Adicionar o repositório

sudo install -d -m 0755 /etc/apt/keyrings
curl -fsSL https://deb.griffo.io/EA0F721D231FDD3A0A17B9AC7808B4DD62C41256.asc | sudo gpg --dearmor --yes -o /etc/apt/keyrings/deb.griffo.io.gpg
echo "deb [signed-by=/etc/apt/keyrings/deb.griffo.io.gpg] https://deb.griffo.io/apt $(lsb_release -sc 2>/dev/null) main" | sudo tee /etc/apt/sources.list.d/deb.griffo.io.list > /dev/null
sudo apt update
install -d -m 0755 /etc/apt/keyrings
curl -fsSL https://deb.griffo.io/EA0F721D231FDD3A0A17B9AC7808B4DD62C41256.asc | gpg --dearmor --yes -o /etc/apt/keyrings/deb.griffo.io.gpg
echo "deb [signed-by=/etc/apt/keyrings/deb.griffo.io.gpg] https://deb.griffo.io/apt $(lsb_release -sc 2>/dev/null) main" | tee /etc/apt/sources.list.d/deb.griffo.io.list > /dev/null
apt update

🆓 Existe um espelho grátis para sempre. deb-free.griffo.io distribui pacotes grátis para sempre — sem conta, sem assinatura, no máximo 2 meses atrás do upstream, correções de segurança imediatas. Hoje ele traz cliamp, Ghostty, lazydocker, Oh My Posh e Zed; difftastic não está entre elas, então o repositório acima é a única forma de instalar hoje — peça e ela pode ser adicionada.

Como funciona o espelho gratuito →

Passo 2: Instalar o difftastic

# Instalar o difftastic mais recente
sudo apt install difftastic

# Verificar a instalação
difft --version
# Instalar o difftastic mais recente
apt install difftastic

# Verificar a instalação
difft --version

Passo 3: Integrar ao git

# Comparar dois arquivos diretamente
difft old.py new.py

# Ou deixar o git chamar o difftastic em todo diff
git config --global diff.external difft

# O git diff comum continua a uma opção de distância
git --no-ext-diff diff

# A página de manual vem no pacote
man difft

🎯 Exemplos básicos de uso

Comparando arquivos e diretórios:

# Dois arquivos, lado a lado
difft before.rs after.rs

# Uma única coluna, mais perto do diff tradicional
difft --display inline before.ts after.ts

# Dois diretórios, pulando os arquivos que não mudaram
difft old/ new/ --skip-unchanged --sort-paths

# Quais linguagens esta build entende?
difft --list-languages

Usando como diff do git:

# Pontual: difftastic só neste diff
GIT_EXTERNAL_DIFF=difft git diff

# Diffs estruturais por todo o histórico
GIT_EXTERNAL_DIFF=difft git log -p --ext-diff

# Registrar como difftool
git config --global difftool.difftastic.cmd 'difft "$LOCAL" "$REMOTE"'
git difftool --tool difftastic

# Um alias do git para um log estrutural
git config --global alias.dlog '!GIT_EXTERNAL_DIFF=difft git log -p --ext-diff'

Ajustando a saída:

# Ignorar mudanças que só tocam comentários
difft --ignore-comments a.go b.go

# Mais contexto, e tabulações valendo dois espaços
difft --context 5 --tab-width 2 a.py b.py

# Para scripts: houve alguma mudança sintática?
difft --check-only --exit-code a.json b.json

# Padrões para toda invocação, vindos do ambiente
export DFT_DISPLAY=inline DFT_BACKGROUND=light

🔧 Integrações com outras ferramentas

o difftastic se encaixa nas ferramentas que já mostram diffs para você:

  • git: GIT_EXTERNAL_DIFF, diff.external ou uma entrada difftool — com --ext-diff isso vale também para git log -p e git show
  • Jujutsu: defina-o como comando de diff no jj e tenha diffs estruturais em um fluxo compatível com Git
  • Mercurial e Fossil: os dois aceitam um comando de diff externo, então o mesmo binário serve todos os seus repositórios
  • Variáveis de ambiente: DFT_DISPLAY, DFT_BACKGROUND, DFT_WIDTH e companhia definem seus padrões de uma vez
  • CI e scripts: --check-only com --exit-code responde "a sintaxe mudou?" sem imprimir o diff, e --display json foi feito para ser processado

🚀 Por que escolher o deb.griffo.io?

📊 Comparativo de repositórios:
  • Ubuntu oficial: não empacota o difftastic — um sistema padrão não tem nada para instalar
  • cargo install difftastic: atualizado, mas é uma compilação longa com muitas gramáticas do tree-sitter, fica fora do apt e sem página de manual
  • Tarball upstream: o binário oficial, baixado na mão a cada lançamento
  • deb.griffo.io: versão mais recente com atualizações automáticas

📦 Repositório de build do pacote

Os pacotes Ubuntu são construídos e mantidos automaticamente neste repositório do GitHub:

🔗 Pacotes relacionados

Também disponíveis no deb.griffo.io:

🎯 Perfeito para: revisar uma refatoração que moveu código, ler o commit de um formatador sem ficar vesgo, separar uma mudança real de API de uma reindentação e qualquer base de código em que "o arquivo inteiro mudou" costuma ser mentira.

📦 Últimos lançamentos deste repositório

❓ Perguntas frequentes

O difftastic está nos repositórios oficiais do Ubuntu?

Não, difftastic não está empacotado nos arquivos oficiais do Ubuntu. Este repositório é atualmente a única fonte apt, oferecendo difftastic 0.70.0.

Como instalo o difftastic mais recente no Ubuntu?

Adicione o repositório deb.griffo.io uma única vez com as instruções acima e execute: sudo apt install difftastic. Novos lançamentos chegam pelo sudo apt upgrade normal.

Os pacotes são assinados e como são construídos?

Cada pacote é assinado com a chave GPG do repositório (EA0F721D231FDD3A0A17B9AC7808B4DD62C41256) e construído a partir de lançamentos upstream em repositórios públicos do GitHub que qualquer pessoa pode inspecionar.

Quais versões do Ubuntu são suportadas?

Ubuntu 22.04 Jammy, 24.04 Noble, 25.10 Questing e 26.04 Resolute.