Comparador de textos
Roda no seu navegador; nada é enviado
Compare duas versões de um texto linha a linha, com as palavras alteradas destacadas.
Original
Modified
Differences
Nothing to compare yet
O que é um diff de texto?
Um diff mostra como duas versões de um texto diferem: quais linhas foram removidas, quais foram adicionadas e quais continuaram iguais. É a ideia por trás do git diff, das ferramentas de code review e da função de comparar da maioria dos editores.
Esta ferramenta pareia as linhas do mesmo jeito que o diff e o git, com o algoritmo de Myers, que encontra o menor conjunto de linhas adicionadas e removidas. Uma linha editada aparece como uma linha removida ao lado da linha adicionada que a substituiu, e as palavras que mudaram dentro dela ficam destacadas.
No trabalho com APIs, um diff responde perguntas como o que mudou numa resposta desde ontem, por que o staging devolve algo diferente da produção, ou quais campos uma nova versão da API adicionou ou removeu. Antes, formate as duas respostas JSON do mesmo jeito, por exemplo com o formatador de JSON, para que só as mudanças reais apareçam.
Como usar esta ferramenta
- 1Cole ou abra a versão mais antiga em Original e a mais nova em Modified. Dá para arrastar um arquivo para qualquer um dos editores. Em Examples há três pares para testar.
- 2Veja o painel Differences: linhas removidas ficam em vermelho com
−, linhas adicionadas em verde com+, e as palavras alteradas dentro de uma linha ficam destacadas. Alterne entre Side by side e Unified no cabeçalho do painel. - 3Only changes recolhe trechos longos de linhas sem mudança, deixando três linhas em volta de cada mudança; clique numa linha recolhida para abri-la. Use F7 e Shift+F7, ou as setas, para pular entre as mudanças.
- 4Use Ignore para desconsiderar diferenças de espaços, maiúsculas e minúsculas ou fim de linha (CRLF contra LF). A barra de status avisa quando os textos diferem só no fim de linha.
- 5Copy patch ou Download patch entrega as mudanças como um diff unificado que o
git applye opatchaceitam. Swap troca os dois lados; Ctrl+Z desfaz um lado por vez, e desfaz o Clear também.
Solução de problemas
- Todas as linhas aparecem como alteradas
- Provavelmente os textos usam fins de linha diferentes (CRLF do Windows contra LF) ou indentação diferente. A barra de status informa os fins de linha; ative Ignore line endings ou Ignore whitespace.
- Duas respostas JSON parecem totalmente diferentes
- Provavelmente uma está minificada ou com outra indentação. Formate as duas com a mesma indentação no formatador de JSON e depois compare. A aba Compare dele também compara JSON por chave, ignorando a ordem das chaves.
- A última linha aparece como alterada, mas parece igual
- Um texto termina com quebra de linha e o outro não. As ferramentas de diff contam isso como mudança (o patch diz
\ No newline at end of file). Ignore line endings deixa isso de fora. - Texto colado nunca mostra fim de linha CRLF
- Os navegadores transformam em LF toda quebra de linha digitada ou colada num campo de texto, então o CRLF não sobrevive à colagem. Abra os arquivos com Open ou arrastando-os: a ferramenta compara os fins de linha como estão no disco.
- Grande demais para comparar
- Cada lado comporta até 50.000 linhas ou 5 milhões de caracteres. Para arquivos maiores, use
git diff --no-index a.txt b.txtoudiff -una linha de comando.
Perguntas frequentes
Por que uma linha alterada aparece como uma remoção e uma adição?
Diffs comparam linhas inteiras. Quando qualquer coisa muda numa linha, a linha antiga deixa de bater, então ela é listada como removida e a nova como adicionada, uma ao lado da outra. As palavras destacadas mostram o que mudou dentro da linha.
O patch segue as opções de Ignore?
Não. O patch sempre descreve as diferenças exatas, incluindo espaços, maiúsculas e minúsculas e fins de linha, para que o git apply e o patch consigam aplicá-lo. As opções de Ignore só mudam o que o painel Differences mostra.
O que significa "shown as replaced"?
Quando dois textos grandes quase não têm nada em comum, encontrar o menor diff pode demorar demais. Depois de uma quantidade fixa de trabalho, a ferramenta mostra o trecho restante como removido e adicionado por inteiro. O resultado continua sendo um diff correto, só que menos detalhado.
Meu texto é enviado para algum lugar?
Não. A comparação roda no seu navegador. Para sobreviver a um reload, o que você cola fica no session storage desta aba até você limpar ou fechar a aba. Copy link coloca a entrada no link depois do #, parte que os navegadores nunca enviam a um servidor, mas qualquer pessoa que receber o link consegue ler. Suas configurações, como o layout e as opções de Ignore, ficam salvas neste navegador.