Trilha de aprendizado · Nível 1 · Tutorial 3

Inspecionar alterações e histórico com diff e log

Você será capaz de conferir mudanças antes de registrá-las e consultar o histórico para localizar commits e entender a sequência de trabalho.

  • Nível: Iniciante
  • Duração: 14 min
  • 7 passos
Inspecionar alterações e histórico com diff e log

O que você vai percorrer

  1. Consultar alterações com git diff Use git diff para inspecionar alterações ainda não preparadas, entendendo quais estados são comparados e por que a consulta não altera o repositório. 2 min
  2. Ler arquivos e linhas no diff Identifique o arquivo afetado e diferencie linhas removidas, adicionadas e de contexto em uma saída curta de git diff. 2 min
  3. Conferir as alterações preparadas Escolha a comparação adequada para conferir mudanças preparadas e mudanças ainda fora do próximo commit. 2 min
  4. Entender os limites de uma saída vazia Use git status como evidência complementar para não confundir um diff vazio com ausência de mudanças. 2 min
  5. Ler os detalhes do histórico com git log Consulte commits registrados e identifique hash, autoria, data e mensagem para reconstruir a sequência de trabalho. 2 min
  6. Localizar commits com git log --oneline Encontre commits no histórico resumido e relacione seus identificadores e mensagens aos registros detalhados. 2 min
  7. Aplicar uma rotina de inspeção Revise um cenário com alterações preparadas, não preparadas e um arquivo não rastreado, e localize um registro no histórico. 3 min

O que você vai aprender

  • Identificar arquivos e linhas adicionadas ou removidas na saída de git diff.
  • Comparar alterações ainda não preparadas com git diff e alterações preparadas com git diff --staged.
  • Reconhecer que git diff não exibe o conteúdo de arquivos ainda não rastreados.
  • Localizar commits por identificador e mensagem usando git log e git log --oneline.
  • Interpretar autoria, data e mensagem na consulta ao histórico.

Antes de começar

  • Registrar alterações em commits locais

Passo 1 de 7

Consultar alterações com git diff

Use git diff para inspecionar alterações ainda não preparadas, entendendo quais estados são comparados e por que a consulta não altera o repositório.

Quais estados são comparados?

Confira o que ainda não foi preparado

O comando git diff, sem argumentos, compara o conteúdo dos arquivos de trabalho com o conteúdo correspondente na área de preparação.

Assim, você consulta alterações ainda não preparadas. A referência é a área de preparação, não necessariamente o último commit.

No terminal, dentro do repositório

bash
git diff

Dica

Como voltar ao terminal

Se a saída abrir no paginador comum do Git, um visualizador dentro do terminal, pressione q para sair da visualização e voltar a digitar comandos.

Identifique a comparação

Qual mudança será consultada?

O título em notas.txt está assim:

  • No último commit: “Rascunho”.
  • Na área de preparação: “Guia”.
  • No arquivo de trabalho: “Guia rápido”.

Quais conteúdos git diff compara nesse arquivo?

Inspecionar não é registrar

Uma consulta, nenhuma alteração

Executar git diff não modifica arquivos, não prepara conteúdo e não cria commits. O comando apenas mostra as diferenças para você decidir o que fazer depois.

Exemplo

Depois da consulta

No exemplo de notas.txt, o arquivo de trabalho continua com “Guia rápido” e a preparação continua com “Guia”. Ver a diferença não transfere a nova edição para a preparação.

Confira o efeito do comando

Consultar também prepara?

Ao executar git diff, as alterações exibidas são automaticamente colocadas na área de preparação.

Passo 2 de 7

Ler arquivos e linhas no diff

Identifique o arquivo afetado e diferencie linhas removidas, adicionadas e de contexto em uma saída curta de git diff.

Primeiro, identifique o arquivo

Para entender uma diferença, separe os cabeçalhos, que identificam o arquivo e os lados da comparação, das linhas de conteúdo.

Trecho dos cabeçalhos

diff
diff --git a/recado.txt b/recado.txt
--- a/recado.txt
+++ b/recado.txt

O arquivo comparado é recado.txt. Os prefixos a/ e b/ representam os dois lados da comparação: não são pastas que você precisa criar.

O cabeçalho --- indica o lado anterior; +++, o posterior. Essas linhas não são conteúdo removido ou adicionado.

Cabeçalho ou conteúdo?

Avalie a afirmação

A linha +++ b/recado.txt representa uma linha de conteúdo adicionada ao arquivo.

Agora, leia as linhas

Trecho de diferenças de recado.txt

diff
@@ -1,3 +1,3 @@
 Avisos da equipe
-Reunião às 9h.
+Reunião às 10h.
 Sala 2.

Leia os sinais, não dependa das cores

A linha com @@ marca o início de um trecho de diferenças e indica sua localização no arquivo. Por enquanto, não é preciso detalhar os números.

Nas linhas de conteúdo:

  • - no início indica remoção.
  • + no início indica adição.
  • Um espaço inicial indica contexto sem alteração.

Esses sinais funcionam mesmo quando o terminal não usa cores.

Exemplo

Uma edição aparece como remoção e adição

A reunião passou das 9h para as 10h: o texto antigo aparece removido e o novo, adicionado. Isso representa a edição de uma linha.

“ avisos”

Descreva a mudança

Trecho de uma nova saída de git diff

diff
diff --git a/lista.txt b/lista.txt
--- a/lista.txt
+++ b/lista.txt
@@ -1,3 +1,3 @@
 Compras
-Café
+Chá
 Pão

O que você identificou?

Indique o arquivo afetado, o conteúdo de uma linha removida, o de uma linha adicionada e o de uma linha de contexto.

Escreva pelo menos 15 caracteres (0/15).

Passo 3 de 7

Conferir as alterações preparadas

Escolha a comparação adequada para conferir mudanças preparadas e mudanças ainda fora do próximo commit.

O que está preparado para o commit?

Consulte com git diff --staged

git diff --staged compara a área de preparação com o último commit. Ele mostra as diferenças que serão registradas no próximo commit se a preparação permanecer como está.

Exemplo

Um arquivo, três estados

Em aviso.txt, uma linha passou por estes estados:

  • Último commit: Status: rascunho
  • Área de preparação: Status: revisado
  • Arquivo de trabalho: Status: pronto

A versão “revisado” foi preparada; depois, houve outra edição. O mesmo arquivo aparece nas duas consultas porque elas comparam pares diferentes de estados.

Trecho de git diff --staged

diff
diff --git a/aviso.txt b/aviso.txt
--- a/aviso.txt
+++ b/aviso.txt
@@ -1 +1 @@
-Status: rascunho
+Status: revisado

Trecho de git diff

diff
diff --git a/aviso.txt b/aviso.txt
--- a/aviso.txt
+++ b/aviso.txt
@@ -1 +1 @@
-Status: revisado
+Status: pronto

Relacione as consultas e as mudanças

O que cada comparação revela?

Relacione os comandos e as mudanças de aviso.txt às descrições corretas.

Toque em um item e depois no par correspondente.

Criação e exclusão também aparecem

Confira os cabeçalhos

git diff --staged também mostra criações e exclusões já preparadas. Nos cabeçalhos, /dev/null indica que não existe arquivo naquele lado da comparação. Veja estes trechos, com metadados omitidos:

Criação preparada: guia.txt

O arquivo não existia no último commit. Seu conteúdo aparece como adição.

diff
diff --git a/guia.txt b/guia.txt
--- /dev/null
+++ b/guia.txt
@@ -0,0 +1 @@
+Comece por aqui.

Exclusão preparada: rascunho.txt

O arquivo deixa de existir no lado preparado. Seu conteúdo anterior aparece como remoção.

diff
diff --git a/rascunho.txt b/rascunho.txt
--- a/rascunho.txt
+++ /dev/null
@@ -1 +0,0 @@
-Anotações antigas.

Arquivo vazio ou excluído?

Interprete a exclusão preparada

Considerando o trecho de rascunho.txt da tela anterior: se a preparação não mudar, o próximo commit manterá esse arquivo, mas vazio.

Passo 4 de 7

Entender os limites de uma saída vazia

Use git status como evidência complementar para não confundir um diff vazio com ausência de mudanças.

Vazio não significa sem mudanças

Uma saída vazia de git diff indica que não há diferenças entre os arquivos de trabalho rastreados e a área de preparação. Isso não garante que o projeto esteja sem mudanças.

Dica

Confira também o estado

Use git status para verificar se existem alterações já preparadas ou arquivos não rastreados fora do alcance dessa consulta.

Julgue pela evidência

Exemplo

Cenário: alteração preparada

git diff não exibiu diferenças. Ao consultar git status, você encontra roteiro.txt como modificado, na seção de alterações preparadas.

Como git diff ficou vazio, não há alterações para entrar no próximo commit.

E os arquivos não rastreados?

git diff não exibe o conteúdo de arquivos não rastreados. git diff --staged também não os inclui enquanto permanecerem fora da preparação.

Exemplo

Confira antes de preparar

Se notas.txt é um arquivo não rastreado, abra-o no editor para ler o conteúdo. Se decidir incluí-lo no próximo commit, prepare esse arquivo explicitamente e confira a versão preparada:

bash
git add notas.txt
git diff --staged

Duas consultas vazias

Exemplo

Cenário: arquivo fora da preparação

Em outro cenário, git diff e git diff --staged não exibiram diferenças. O git status mostra apenas notas.txt como arquivo não rastreado.

Qual conclusão é válida?

Passo 5 de 7

Ler os detalhes do histórico com git log

Consulte commits registrados e identifique hash, autoria, data e mensagem para reconstruir a sequência de trabalho.

Consultar o que já foi registrado

Na pasta do repositório, execute o comando abaixo. git log mostra commits já registrados, não mudanças que ainda estão apenas nos arquivos de trabalho ou na área de preparação.

Comando

bash
git log

Um commit em uma saída fictícia

text
commit c83a4d219e7f6b05a2d908b31f4e6c70d59a8123
Author: Ana Lima <ana@example.com>
Date:   Tue May 6 14:30:00 2025 -0300

    Corrige horário de atendimento

Como ler os campos

  • commit: o identificador, também chamado de hash, identifica esse registro no histórico.
  • Author: informa a autoria, com nome e e-mail.
  • Date: apresenta a data de autoria. Aqui, 6 de maio de 2025, às 14h30, no fuso indicado por -0300.
  • Mensagem: aparece abaixo da data e descreve o que foi registrado.

Identificar os dados de um commit

Outro registro do mesmo histórico

text
commit f174b6e20a93c8d57e601fb48d2a9c350e76b812
Author: Bruno Reis <bruno@example.com>
Date:   Mon May 5 10:00:00 2025 -0300

    Adiciona horário de atendimento

Relacione cada informação

Associe cada campo ao dado correspondente no registro acima.

Toque em um item e depois no par correspondente.

Reconstruir a sequência de trabalho

Mais recente primeiro

No histórico linear simples usado neste exercício, git log apresenta os commits mais recentes antes dos mais antigos.

Para acompanhar o trabalho do início ao fim, leia os registros de baixo para cima e conecte suas mensagens. Elas ajudam a entender o que foi feito em cada etapa.

Dica

Hash não é contador de versões

O identificador não significa “versão 1, 2, 3”. Não tente descobrir qual commit é mais recente comparando o valor dos hashes: use a posição dos registros nesse histórico.

Do primeiro registro ao mais recente

Histórico linear do projeto fictício

text
commit c83a4d219e7f6b05a2d908b31f4e6c70d59a8123
Author: Ana Lima <ana@example.com>
Date:   Tue May 6 14:30:00 2025 -0300

    Corrige horário de atendimento

commit f174b6e20a93c8d57e601fb48d2a9c350e76b812
Author: Bruno Reis <bruno@example.com>
Date:   Mon May 5 10:00:00 2025 -0300

    Adiciona horário de atendimento

commit 8b71e6d4c2309a5f17e8b602d9c43f50a6e12b73
Author: Ana Lima <ana@example.com>
Date:   Fri May 2 09:00:00 2025 -0300

    Cria página inicial

Qual foi a sequência do trabalho?

Organize as mensagens do commit mais antigo para o mais recente.

  1. Corrige horário de atendimento
  2. Adiciona horário de atendimento
  3. Cria página inicial

Passo 6 de 7

Localizar commits com git log --oneline

Encontre commits no histórico resumido e relacione seus identificadores e mensagens aos registros detalhados.

Uma linha por commit

Para localizar um commit sem percorrer todos os seus detalhes, use git log --oneline.

Cada linha reúne o identificador abreviado e o resumo da mensagem. Esse resumo corresponde ao título, ou primeira linha, da mensagem do commit.

Comando

bash
git log --oneline

Encontre pela mensagem

Trecho fictício de git log --oneline

plaintext
e3b90a6 Ajusta o título da página
4c8d2e1 Corrige o link de contato
b7a16c2 Adiciona instruções de instalação
9f2c7a4 Cria a página inicial

Localize a correção

Qual é o identificador abreviado do commit que corrige o link de contato? Digite apenas o identificador.

O mesmo commit, em duas apresentações

Abreviar não muda o registro

O identificador abreviado é um prefixo do identificador completo: ele mostra os caracteres iniciais, na mesma ordem.

A quantidade de caracteres pode variar; não precisa ser sempre sete. A forma abreviada continua representando o mesmo commit.

Dica

Escolha a visão conforme a informação

Use git log --oneline para localizar registros rapidamente. Para conferir autoria, data e a mensagem completa, consulte a saída padrão de git log.

Relacione o resumo aos detalhes

Registro detalhado em git log

plaintext
commit b7a16c2d9034e85f6a102bc7d8e49f305ac612e0
Author: Ana Lima <ana@exemplo.test>
Date:   Tue Apr 8 10:20:00 2025 -0300

    Adiciona instruções de instalação

    Explica como preparar o projeto no computador.

Histórico resumido

plaintext
e3b90a6 Ajusta o título da página
4c8d2e1 Corrige o link de contato
b7a16c2 Adiciona instruções de instalação
9f2c7a4 Cria a página inicial

Qual é a correspondência?

Qual commit do histórico resumido corresponde ao registro detalhado? Informe o identificador abreviado e justifique usando o início do identificador completo e a primeira linha da mensagem.

Escreva pelo menos 25 caracteres (0/25).

Passo 7 de 7

Aplicar uma rotina de inspeção

Revise um cenário com alterações preparadas, não preparadas e um arquivo não rastreado, e localize um registro no histórico.

O estado do projeto

Uma revisão antes do commit

Neste projeto fictício, git status indica alterações preparadas e não preparadas em aviso.txt, além de ideias.txt como não rastreado. Não há outras mudanças. Compare as saídas:

Saída de git diff

diff
diff --git a/aviso.txt b/aviso.txt
--- a/aviso.txt
+++ b/aviso.txt
@@ -1,2 +1,2 @@
 Atendimento
-Sábado: 9h às 12h
+Sábado: 9h às 13h

Saída de git diff --staged

diff
diff --git a/aviso.txt b/aviso.txt
--- a/aviso.txt
+++ b/aviso.txt
@@ -1,2 +1,2 @@
 Atendimento
-Sábado: 10h às 12h
+Sábado: 9h às 12h

Decida o que será registrado

Qual mudança está preparada?

Se a área de preparação permanecer como está, qual consulta confirma a mudança que será registrada no próximo commit?

Complete a inspeção

Qual comando mostra a mudança ainda não preparada em aviso.txt? Por que ideias.txt não aparece nos diffs e onde você pode ler seu conteúdo?

Escreva pelo menos 20 caracteres (0/20).

Localize a origem no histórico

Histórico do projeto: git log --oneline

text
c84d2a1 Ajusta título do aviso
7e3b9c2 Adiciona horário de sábado
2a61f80 Cria aviso de atendimento

Detalhes de um registro: trecho de git log

text
commit 7e3b9c2a4d6e8f00112233445566778899aabbcc
Author: Marina Costa <marina@example.com>
Date:   Mon Jun 9 09:00:00 2025 -0300

    Adiciona horário de sábado

Relacione as duas consultas

Localize o commit que adicionou o horário de sábado. Informe seu identificador abreviado, autoria, data de autoria e mensagem. Nesse histórico linear, ele veio antes ou depois do ajuste no título?

Escreva pelo menos 20 caracteres (0/20).

Sua rotina de revisão

Resumo

Antes de registrar, confira

  • Escolha a comparação: git diff para mudanças ainda não preparadas; git diff --staged para mudanças preparadas.
  • Confira o arquivo e as linhas de conteúdo: - indica remoção, + indica adição e espaço inicial indica contexto.
  • Complete a revisão com git status. Arquivos não rastreados ficam fora dessas consultas de diff; confira seu conteúdo no editor.
  • Localize commits com git log --oneline e use git log para conferir autoria, data e mensagem dos registros.

Tutorial concluído

Parabéns! Você concluiu: Inspecionar alterações e histórico com diff e log

Você praticou a conferência do próximo commit, reconheceu o que ficou fora dele e localizou um registro no histórico.

Baixe o Aplicativo agora para ter acesso a + de 5000 cursos gratuitos, exercícios, certificado e muito conteúdo sem pagar nada!

  • Cursos online 100% gratuitos do início ao fim

    Milhares de cursos online em vídeo, ebooks e áudiobooks.

  • Mais de 60 mil exercícios gratuitos

    Para testar seus conhecimentos no decorrer dos cursos online

  • Certificado Digital gratuito válido em todo o Brasil

    Gerado diretamente na galeria de fotos do seu celular e enviado ao seu e-mail

Aplicativo Cursa na tela de ebook, na tela de curso em vídeo e na tela de exercícios do curso, mais o certificado de conclusão de curso