git diff
Mostra as alterações entre seus arquivos, a área de preparação e os commits
O comando 'git diff' mostra exatamente as linhas que mudaram. Sem argumentos, compara seus arquivos de trabalho com a área de preparação — as alterações ainda não preparadas. Com --staged, compara a área de preparação com o último commit — o que o próximo commit vai conter. Passe commits ou branches para comparar quaisquer duas versões do projeto.
Sinopse
git diff [<options>] [<commit>] [--] [<path>...]
git diff [<options>] --staged [<commit>] [--] [<path>...]
git diff [<options>] <commit> <commit> [--] [<path>...]Opções
Escolhendo a opção certa
O que o git diff compara
Escolha os dois lados que quer comparar
| Comando | Lado esquerdo | Lado direito |
|---|---|---|
git diff | Área de preparação | Arquivos de trabalho |
git diff --staged | Último commit | Área de preparação |
git diff HEAD | Último commit | Arquivos de trabalho |
git diff A B | Commit A | Commit B |
Exemplos
Alterações não preparadas
git diffO que mudou nos seus arquivos mas ainda não foi preparado.
Alterações preparadas
git diff --stagedO que o próximo commit vai conter.
Dois commits
git diff HEAD~1 HEADO que o último commit alterou.
Duas branches
git diff main feature/loginTudo o que difere entre dois branches.
Exemplos de fluxos de trabalho
git diffLer o que você alterou
git add app.jsPrepará-lo
git diff --stagedLer o que será commitado
git commit -m "Add to cart"Commit
git diff main...feature/login --statArquivos que o branch alterou desde que se separou de main
git diff main...feature/loginAs alterações completas
Solução de problemas
git diff não mostra nada, mas arquivos mudaram
Causa: As alterações já estão preparadas
Use git diff --staged (ou git diff HEAD para ambas)
Um arquivo novo não aparece no diff
Causa: Arquivos não rastreados não são comparados
Prepare-o com git add e depois use git diff --staged
O arquivo inteiro aparece como alterado
Causa: Finais de linha ou espaços mudaram
Tente git diff -w para ignorar espaços e verifique core.autocrlf
Dicas e armadilhas
Boas práticas
- ✓Revise git diff --staged antes de cada commit.
- ✓Em alterações grandes, comece com --stat e depois leia os detalhes.
- ✓Compare branches com três pontos (main...branch) para ver só o que o branch acrescentou.
Erros comuns
- ✗Esperar que git diff mostre as alterações preparadas — ele não mostra; use git diff --staged.
- ✗Esperar ver arquivos não rastreados no git diff: arquivos novos só aparecem depois de adicionados.
- ✗Trocar a ordem de dois commits: git diff A B mostra como ir de A para B.
Perguntas frequentes
git diff --staged (ou o sinônimo git diff --cached).
git diff HEAD compara o último commit com seus arquivos de trabalho.
git show <commit>, ou git diff <commit>~1 <commit>.