git diff

Snapshots básicos

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>...]
[ ] opcional| ou<arg> valor a substituir... repetível--flag opção

Opções

Clique em uma opção para expandir

Iniciante (4)

Compara a área de preparação com o último commit: as alterações que o próximo commit vai gravar. --cached é um sinônimo.

RecomendadoRevise exatamente o que você vai commitar

Exemplo

git diff --staged

Mostra um resumo: cada arquivo alterado com o número de linhas alteradas e depois um total.

RecomendadoVisão rápida do tamanho de uma alteração

Exemplo

git diff --stat

Mostra só os nomes dos arquivos alterados.

Quando necessárioListar arquivos alterados, p. ex. para passá-los a um linter

Exemplo

git diff --name-only

Mostra os nomes dos arquivos alterados com uma letra: A adicionado, M modificado, D excluído, R renomeado.

Quando necessárioVer quais arquivos foram adicionados, modificados ou excluídos

Exemplo

git diff --name-status

Escolhendo a opção certa

O que o git diff compara

Escolha os dois lados que quer comparar

ComandoLado esquerdoLado direito
git diffÁrea de preparaçãoArquivos de trabalho
git diff --stagedÚltimo commitÁrea de preparação
git diff HEADÚltimo commitArquivos de trabalho
git diff A BCommit ACommit B

Exemplos

Alterações não preparadas

git diff

O que mudou nos seus arquivos mas ainda não foi preparado.


Alterações preparadas

git diff --staged

O que o próximo commit vai conter.


Dois commits

git diff HEAD~1 HEAD

O que o último commit alterou.


Duas branches

git diff main feature/login

Tudo o que difere entre dois branches.

Exemplos de fluxos de trabalho

1
git diff

Ler o que você alterou

2
git add app.js

Prepará-lo

3
git diff --staged

Ler o que será commitado

4
git commit -m "Add to cart"

Commit

1
git diff main...feature/login --stat

Arquivos que o branch alterou desde que se separou de main

2
git diff main...feature/login

As 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

A:

git diff --staged (ou o sinônimo git diff --cached).

A:

git diff HEAD compara o último commit com seus arquivos de trabalho.

A:

git show <commit>, ou git diff <commit>~1 <commit>.