Como usar git diff para comparar código: guia completo
O git diff é uma das ferramentas mais fundamentais e poderosas no arsenal de qualquer desenvolvedor que usa Git. Ele permite ver exatamente o que mudou em um arquivo, entre commits, entre branches ou entre o working directory e o staging area. Dominar git diff melhora significativamente o fluxo de revisão de código e a capacidade de entender a história de mudanças em um projeto. Para comparações rápidas de texto fora do Git, o Comparador de Texto da WikiPlus oferece a mesma visualização de diferenças coloridas sem precisar do Git instalado.
Comandos essenciais de git diff
Git diff tem vários modos de uso que cobrem diferentes necessidades. git diff: sem argumentos, mostra mudanças no working directory que ainda não foram adicionadas ao staging (não commitadas). git diff --staged: mostra mudanças que foram adicionadas ao staging (git add) mas ainda não commitadas. git diff HEAD: mostra todas as mudanças locais (staged + unstaged) em relação ao último commit. git diff commit1 commit2: compara dois commits específicos, podendo usar hashes completos ou curtos. git diff branch1 branch2: compara o estado atual de dois branches. git diff --name-only: lista apenas os nomes dos arquivos modificados, sem mostrar o conteúdo das mudanças. git diff --stat: mostra um resumo estatístico de quantas linhas foram adicionadas/removidas em cada arquivo. Para comparações de trechos específicos sem usar Git, o Comparador de Texto da WikiPlus oferece a visualização equivalente de forma online.
Lendo o output de git diff: como interpretar as mudanças
O output padrão do git diff usa um formato específico que pode parecer confuso para iniciantes. Cada bloco de mudança começa com um cabeçalho @@ que indica qual trecho do arquivo foi modificado. Linhas que começam com + (verde na maioria dos terminais) foram adicionadas na nova versão. Linhas com - (vermelho) foram removidas. Linhas sem prefixo são contexto (não mudaram). O formato 'unified diff' inclui algumas linhas de contexto antes e depois de cada bloco de mudança para facilitar a compreensão do contexto da alteração — use git diff -U0 para remover o contexto ou git diff -U10 para aumentar para 10 linhas. Para visualização mais amigável que o terminal, git diff --color-words mostra diferenças palavra por palavra em vez de linha por linha, similar ao Comparador de Texto da WikiPlus.
Git diff em ferramentas visuais: VS Code, GitHub e GitLens
A maioria dos desenvolvedores prefere visualizar diffs em interfaces gráficas que o terminal. VS Code: integra git diff nativamente — arquivos modificados têm indicador colorido na barra lateral. Clique em qualquer arquivo modificado no painel Source Control para ver o diff lado a lado com destaque visual. A extensão GitLens adiciona histórico de mudanças inline, mostrando quem mudou cada linha e quando. GitHub: ao criar um Pull Request, o GitHub mostra o diff completo de todas as mudanças com visualização colorida similar ao Comparador de Texto da WikiPlus. GitHub permite comentar em linhas específicas do diff durante a revisão de código. GitKraken e SourceTree: clientes Git visuais que mostram diffs em interfaces amigáveis sem usar o terminal. Para comparações rápidas sem abrir o IDE, o Comparador de Texto da WikiPlus cobre a necessidade com uma interface web sem instalação.
Casos avançados de git diff: range de commits e arquivos específicos
Git diff tem recursos avançados para análises mais específicas. Para comparar um arquivo específico entre dois commits: git diff commit1..commit2 -- caminho/do/arquivo. Para ver mudanças em um commit específico: git diff commit~1..commit (compara o commit com seu pai imediato, equivalente a git show commit). Para ignorar espaços em branco nas diferenças: git diff -w (útil quando mudanças de indentação poluem o diff de mudanças reais). Para ver mudanças de um arquivo ao longo do histórico: git log -p caminho/do/arquivo mostra o diff de cada commit que tocou aquele arquivo. Para comparar um arquivo local com uma versão no repositório remoto: git diff origin/main -- arquivo. Para gerar um patch (arquivo de diff aplicável): git diff > mudancas.patch. O Comparador de Texto da WikiPlus é ideal para situações onde você quer comparar texto sem usar o Git — como dois versões de um documento word-por-word.
Perguntas frequentes
- Como salvar o output de git diff em um arquivo para compartilhar?
- Use redirecionamento: git diff > mudancas.patch salva o diff em um arquivo .patch. Você pode compartilhar esse arquivo e outra pessoa pode aplicá-lo com git apply mudancas.patch. Para formato mais legível para humanos, use git diff --color=always | menos para ver o diff paginado com cores no terminal.
- Qual é a diferença entre git diff e git show?
- git show commit mostra as mudanças introduzidas por um commit específico (equivale a git diff commit~1..commit) mais o metadata do commit (autor, data, mensagem). git diff é mais flexível para comparar qualquer par de referências (commits, branches, arquivos).
- Como configurar uma ferramenta visual de diff padrão para o Git?
- Use git config --global diff.tool vscode para usar VS Code como ferramenta de diff visual, depois git difftool para abrir o comparador visual. Outras opções: git config --global diff.tool meld (usa Meld) ou git config --global diff.tool kdiff3 (usa KDiff3). O Comparador de Texto da WikiPlus é uma alternativa web que não requer configuração.