Como Verificar se um Commit Git foi Revertido

GitBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá como identificar se um commit Git foi revertido. Exploraremos como usar o comando git log para encontrar commits de reversão e, em seguida, utilizaremos git show para verificar os detalhes dessas reversões. Finalmente, examinaremos commits não revertidos para entender a diferença em seu histórico e conteúdo. Este exercício prático irá guiá-lo através da criação de um histórico de projeto de amostra, incluindo um commit que é subsequentemente revertido, permitindo que você pratique as técnicas para identificar e verificar commits revertidos.

Executar git log para Encontrar Commits de Reversão

Nesta etapa, aprenderemos como usar git log para encontrar commits que foram revertidos. Reverter um commit significa criar um novo commit que desfaz as alterações introduzidas por um commit anterior. Isso é útil quando você cometeu um erro e deseja desfazê-lo facilmente sem perder o histórico do commit original.

Primeiro, vamos garantir que estamos no diretório do nosso projeto. Abra seu terminal e navegue até o diretório my-time-machine:

cd ~/project/my-time-machine

Agora, vamos criar alguns commits para simular um histórico do projeto, incluindo um commit que reverteremos mais tarde.

Crie o primeiro arquivo:

echo "Initial content" > file1.txt
git add file1.txt
git commit -m "Add file1"

Você deve ver uma saída semelhante a esta:

[master (root-commit) a1b2c3d] Add file1
 1 file changed, 1 insertion(+)
 create mode 100644 file1.txt

Agora, vamos adicionar mais conteúdo e fazer outro commit:

echo "Adding more content" >> file1.txt
git add file1.txt
git commit -m "Add more content to file1"

Você deve ver uma saída semelhante a esta:

[master 4e5f6g7] Add more content to file1
 1 file changed, 1 insertion(+)

Em seguida, vamos fazer um commit que reverteremos mais tarde:

echo "This commit will be reverted" > file2.txt
git add file2.txt
git commit -m "Add file2 (will be reverted)"

Você deve ver uma saída semelhante a esta:

[master 8h9i0j1] Add file2 (will be reverted)
 1 file changed, 1 insertion(+)
 create mode 100644 file2.txt

Agora, vamos reverter o último commit. Podemos usar git revert HEAD para reverter o commit mais recente:

git revert HEAD --no-edit

A flag --no-edit diz ao Git para criar automaticamente a mensagem de commit de reversão sem abrir um editor. Você deve ver uma saída semelhante a esta:

[master k2l3m4n] Revert "Add file2 (will be reverted)"
 1 file changed, 1 deletion(-)
 delete mode 100644 file2.txt

Ótimo! Agora criamos um commit que reverte as alterações do commit "Add file2 (will be reverted)".

Agora, vamos usar git log para visualizar nosso histórico de commits e encontrar o commit de reversão:

git log --oneline

Você deve ver uma saída semelhante a esta:

k2l3m4n (HEAD -> master) Revert "Add file2 (will be reverted)"
8h9i0j1 Add file2 (will be reverted)
4e5f6g7 Add more content to file1
a1b2c3d Add file1

Observe a mensagem de commit "Revert 'Add file2 (will be reverted)'". Isso indica claramente que este commit é uma reversão de um commit anterior. Usar git log com a flag --oneline é uma maneira rápida de ver um resumo do seu histórico de commits e identificar commits de reversão por sua mensagem.

Usar git show para Verificar a Reversão

Nesta etapa, usaremos o comando git show para examinar os detalhes do commit de reversão e verificar se ele desfez corretamente as alterações do commit original. O comando git show é uma ferramenta poderosa para inspecionar objetos Git, incluindo commits, tags e blobs.

Primeiro, certifique-se de estar no diretório ~/project/my-time-machine:

cd ~/project/my-time-machine

Agora, precisamos do hash do commit do commit de reversão. Você pode obtê-lo a partir da saída de git log --oneline da etapa anterior. É o primeiro commit listado. Por exemplo, se sua saída de git log --oneline foi:

k2l3m4n (HEAD -> master) Revert "Add file2 (will be reverted)"
8h9i0j1 Add file2 (will be reverted)
4e5f6g7 Add more content to file1
a1b2c3d Add file1

O hash do commit para o commit de reversão é k2l3m4n. Observação: Seu hash de commit será diferente.

Agora, use git show seguido pelo hash do commit do seu commit de reversão. Substitua YOUR_REVERT_COMMIT_HASH pelo hash real da sua saída de git log --oneline:

git show YOUR_REVERT_COMMIT_HASH

Por exemplo, usando o hash de exemplo k2l3m4n:

git show k2l3m4n

Você deve ver uma saída semelhante a esta:

commit k2l3m4n (HEAD -> master)
Author: Jane Doe <jane.doe@example.com>
Date:   Mon Aug 7 10:05:00 2023 +0000

    Revert "Add file2 (will be reverted)"

    This reverts commit 8h9i0j1.

diff --git a/file2.txt b/file2.txt
deleted file mode 100644
index 8b1a99c..0000000
--- a/file2.txt
+++ /dev/null
@@ -1 +0,0 @@
-This commit will be reverted

Vamos analisar esta saída:

  • A primeira parte mostra os detalhes do commit: o hash do commit, o autor, a data e a mensagem do commit. Observe que a mensagem afirma explicitamente que reverte um commit específico (identificado por seu hash).
  • A seção diff mostra as alterações introduzidas por este commit. Neste caso, mostra que file2.txt foi excluído (deleted file mode 100644). Isso confirma que o commit de reversão desfez com sucesso a criação de file2.txt.

Usar git show permite que você inspecione as alterações exatas introduzidas por qualquer commit em seu histórico. Isso é incrivelmente útil para entender o histórico do seu projeto e verificar se as reversões ou outras alterações foram aplicadas corretamente.

Testar Commits Não Revertidos

Nas etapas anteriores, criamos vários commits e, em seguida, revertemos um deles. Usamos git log para ver o histórico e git show para inspecionar o commit de reversão. Agora, vamos verificar se os commits que não foram revertidos ainda existem e contêm as alterações esperadas.

Primeiro, certifique-se de estar no diretório ~/project/my-time-machine:

cd ~/project/my-time-machine

Recorde nosso histórico de commits de git log --oneline:

k2l3m4n (HEAD -> master) Revert "Add file2 (will be reverted)"
8h9i0j1 Add file2 (will be reverted)
4e5f6g7 Add more content to file1
a1b2c3d Add file1

Os commits "Add file1" e "Add more content to file1" não foram revertidos. Vamos usar git show para inspecionar o commit "Add more content to file1" e ver suas alterações.

Encontre o hash do commit para "Add more content to file1" na sua saída de git log --oneline. No exemplo acima, é 4e5f6g7. Lembre-se de usar o seu hash de commit real.

Agora, use git show com esse hash de commit:

git show YOUR_MORE_CONTENT_COMMIT_HASH

Por exemplo, usando o hash de exemplo 4e5f6g7:

git show 4e5f6g7

Você deve ver uma saída semelhante a esta:

commit 4e5f6g7
Author: Jane Doe <jane.doe@example.com>
Date:   Mon Aug 7 10:02:00 2023 +0000

    Add more content to file1

diff --git a/file1.txt b/file1.txt
index 8b1a99c..a1b2c3d 100644
--- a/file1.txt
+++ b/file1.txt
@@ -1 +1,2 @@
 Initial content
+Adding more content

Esta saída mostra os detalhes do commit e a seção diff indica claramente que uma linha "Adding more content" foi adicionada a file1.txt. Isso confirma que este commit e suas alterações ainda fazem parte do histórico do projeto, mesmo que um commit posterior tenha sido revertido.

Isso demonstra um aspecto fundamental do Git: reverter um commit cria um novo commit que desfaz as alterações. Ele não apaga o commit original do histórico. Isso é importante porque mantém um registro completo de todas as alterações, permitindo que você entenda a evolução completa do seu projeto.

Você pode usar git show de forma semelhante com o hash do commit "Add file1" (a1b2c3d no exemplo) para ver a criação inicial de file1.txt.

Ao usar git log para ver o histórico e git show para inspecionar commits individuais, você pode navegar e entender efetivamente a linha do tempo do seu projeto, mesmo quando os commits foram revertidos.

Resumo

Neste laboratório, aprendemos como identificar commits revertidos em um repositório Git. Começamos criando um histórico do projeto com vários commits, incluindo um especificamente destinado à reversão. Em seguida, usamos o comando git revert HEAD --no-edit para criar um novo commit que desfaz as alterações do commit anterior. Este processo demonstrou como reverter um commit adiciona um novo commit ao histórico, em vez de remover o original.

Continuaremos a explorar como usar git log para encontrar esses commits de reversão e git show para verificar seu conteúdo, distinguindo-os dos commits não revertidos.