Comparação de diferenças de texto (Diff)
Compare dois blocos de texto linha por linha e veja as linhas adicionadas e removidas destacadas em cores. Útil para verificar alterações em arquivos de configuração, revisar documentos ou fazer revisão de código sem usar o Git. Todo o cálculo é feito no navegador; o conteúdo digitado nunca é enviado a um servidor.
Comparar dois textos linha a linha
Esta é a ferramenta a que se recorre quando se quer estabelecer o que mudou num arquivo de configuração, ou onde um escrito foi revisto. Ela confronta dois textos linha a linha e marca em cores distintas as linhas acrescentadas e as suprimidas. Tudo é calculado dentro do navegador, então nada do que você colar sai do seu equipamento.
**Convém saber, ao ler o resultado, que um algoritmo de diferenças procura a sequência de edições mais curta.** Por isso **aquilo que uma pessoa vê como "este parágrafo desceu" a máquina exprime como uma supressão emparelhada com uma inclusão.** Não existe notação alguma para o movimento como tal. O outro ponto é que a comparação corre por linhas, de modo que **uma linha que difere num único caractere é relatada como alterada por inteiro.** O caso mais desconcertante aqui é uma diferença nos finais de linha ou nos espaços finais, que pode marcar como alterada cada linha embora nada pareça diferente. Quando uma diferença sai improvavelmente grande, é disso que se deve suspeitar primeiro.
Como se usa
- Cole o original em A Ponha o conteúdo tal como estava antes da mudança.
- Cole a revisão em B Ponha o conteúdo tal como ficou depois da mudança.
- Leia as diferenças coloridas **As linhas acrescentadas e as suprimidas aparecem em cores distintas.**
- Suspeite dos finais de linha se a diferença for enorme **Uma diferença apenas nos finais de linha ou nos espaços finais marca como alterada cada linha.**
Dicas para aproveitar melhor
- Cole a versão anterior e a posterior de um arquivo de configuração (.env, YAML, JSON etc.) para ver na hora quais linhas foram adicionadas ou removidas.
- Mesmo sem ter o Git instalado, dá para fazer uma revisão de código simples ou revisar um documento apenas copiando e colando duas versões.
- Uma linha que apenas mudou de posição é detectada como uma remoção mais uma adição, não como um "movimento" — vale lembrar disso ao interpretar o resultado.
- Espaços, quebras de linha e maiúsculas/minúsculas são comparados de forma estrita, então uma linha que só mudou a indentação também aparecerá como alterada.
- Ao comparar textos longos, colocar um parágrafo por linha antes de colar facilita ver as diferenças por parágrafo rapidamente.
Quando é útil
Revisar uma mudança num arquivo de configuração
Antes que vá para produção você pode ver que só mudou aquilo que pretendia mudar.
Cotejar o resultado de uma revisão
**Confrontar um rascunho com a sua reescrita deixa seguir de relance por onde passou a mão.**
Revisar sem Git
Os arquivos que nunca estiveram sob controle de versão podem igualmente ser comparados bastando colá-los.
Confirmar que uma saída é reproduzível
Compare os resultados de executar duas vezes o mesmo processo e confirme que nada diverge.
Termos das diferenças
- Linha acrescentada
- Uma linha presente só em B.
- Linha suprimida
- Uma linha presente só em A. **Uma linha que apenas se moveu também aflora como uma supressão emparelhada com uma inclusão.**
- Comparação por linhas
- Uma comparação que trata cada linha como uma unidade. **Uma diferença de um caractere marca a linha inteira como alterada.**
- Final de linha
- O caractere que marca o fim de uma linha: CRLF no Windows, LF nos sistemas tipo Unix. **Uma diferença aqui pode aparecer como se todas as linhas diferissem.**
- Bloco
- Um só trecho dentro de uma diferença onde as mudanças se agrupam.
- Contexto
- As linhas sem mudança mostradas acima e abaixo de uma alterada, incluídas para situar melhor a posição.
Perguntas frequentes
Curiosidade — como o LCS (maior subsequência comum) calcula diferenças de texto
O algoritmo mais conhecido para detectar diferenças entre dois textos é o "algoritmo de diferenças de Myers", publicado na década de 1970 pelo cientista da computação Eugene Myers, da IBM. O comando `diff` dos principais sistemas de controle de versão, como Git e SVN, é baseado nessa família de algoritmos, detectando de forma eficiente linhas adicionadas e removidas. Esta ferramenta segue a mesma ideia, calculando a maior subsequência comum (LCS) para reduzir o resultado a um conjunto mínimo de mudanças.
A maior subsequência comum (LCS) é a sequência mais longa que aparece, na mesma ordem, em ambas as sequências comparadas — neste caso, a sequência de linhas. A diferença entre dois textos é obtida tratando toda linha que não faz parte dessa LCS como "removida" ou "adicionada"; quanto maior a LCS, menos mudanças aparecem na tela. Uma técnica chamada programação dinâmica (PD) torna esse cálculo viável mesmo para textos com muitas linhas.
Algoritmos de diferença têm uma limitação conhecida: quando uma linha apenas se move para outra posição, a maioria das implementações não detecta isso como um "movimento", mostrando-o como uma remoção junto com uma adição. É por isso que comparar textos cuja ordem de linhas foi muito embaralhada pode fazer a diferença parecer maior do que a mudança real. Conhecer essa característica ajuda a interpretar os resultados sem confusão.