Como Visualizar Alterações em um Commit Git Específico

GitBeginner
Pratique Agora

Introdução

O Git é um poderoso sistema de controle de versão que ajuda os desenvolvedores a rastrear alterações, colaborar e gerenciar seu código-fonte de forma eficaz. Uma habilidade fundamental no Git é a capacidade de inspecionar o histórico do projeto para ver quais alterações foram feitas, quando e por quem. Neste laboratório, você aprenderá como visualizar as alterações introduzidas em um commit específico do Git. Isso é essencial para entender a evolução do seu projeto, revisar código e solucionar problemas.

Explorando o Histórico de Commits

Antes de poder visualizar as alterações em um commit específico, você primeiro precisa encontrar esse commit. O comando git log é usado para exibir o histórico de commits de um repositório. Para este laboratório, um repositório Git de exemplo foi criado para você em ~/project/git-demo.

Primeiro, navegue até o diretório do projeto. Todos os comandos neste laboratório devem ser executados dentro deste diretório.

cd ~/project/git-demo

Agora, use o comando git log com a opção --oneline para ver uma visualização compacta do histórico de commits. Isso mostrará uma lista de todos os commits, cada um com seu hash de commit exclusivo e mensagem de commit.

git log --oneline

Você deverá ver uma saída semelhante a esta. Os hashes de commit na sua tela serão diferentes, mas as mensagens serão as mesmas.

a1b2c3d (HEAD -> master) Add application file
e4f5g6h Update README with project description
i7j8k9l Initial commit: Add README.md

Cada linha representa um commit. A string de 7 caracteres no início de cada linha (por exemplo, a1b2c3d) é uma versão abreviada do hash do commit, que identifica exclusivamente o commit. Você usará esses hashes nas próximas etapas para inspecionar commits específicos.

Visualizando as Alterações de um Commit Específico

Agora que você tem uma lista de commits, pode usar o comando git show para visualizar os detalhes e as alterações de um commit específico. Este comando mostra os metadados do commit (autor, data, mensagem) e o "diff", que destaca as linhas exatas que foram adicionadas ou removidas.

Vamos inspecionar o segundo commit, que tem a mensagem "Update README with project description". Encontre o hash desse commit na saída da etapa anterior.

Copie o hash e use-o com git show. Substitua <commit-hash> pelo hash real do seu terminal.

git show <commit-hash>

Por exemplo, se o hash para esse commit fosse e4f5g6h, você executaria:

git show e4f5g6h

A saída será algo parecido com isto:

commit e4f5g6h1a2b3c4d5e6f7g8h9i0j1k2l3m4n5o6p7
Author: LabEx <labex@example.com>
Date:   ...

    Update README with project description

diff --git a/README.md b/README.md
index ...
--- a/README.md
+++ b/README.md
@@ -1 +1,3 @@
 ## My Project
+
+This is a simple project to demonstrate Git.

Vamos analisar a saída:

  • Metadados do Commit: As primeiras linhas mostram o hash completo do commit, autor, data e a mensagem do commit.
  • Seção Diff: A parte que começa com diff --git é o "diff".
    • --- a/README.md e +++ b/README.md indicam as versões "antes" e "depois" do arquivo.
    • Linhas prefixadas com + são linhas que foram adicionadas neste commit.
    • Linhas prefixadas com - (não presentes neste exemplo) são linhas que foram removidas.

Visualizando Alterações de um Arquivo Específico em um Commit

Às vezes, um commit pode alterar vários arquivos, mas você está interessado apenas nas alterações de um arquivo específico. Você pode instruir o git show a exibir apenas as alterações de um arquivo em particular adicionando o caminho do arquivo ao final do comando.

Vamos examinar o commit mais recente, que tem a mensagem "Add application file". Este commit adicionou o arquivo app.py.

Primeiro, obtenha o hash do commit mais recente na saída do seu git log --oneline. Em seguida, execute git show com esse hash, seguido por -- e o nome do arquivo app.py.

git show app.py < latest-commit-hash > --

Por exemplo, se o hash do commit mais recente for a1b2c3d, o comando seria:

git show a1b2c3d -- app.py

A saída agora será limitada às alterações feitas em app.py nesse commit.

commit a1b2c3d...
Author: LabEx <labex@example.com>
Date:   ...

    Add application file

diff --git a/app.py b/app.py
new file mode 100644
index 0000000..d95f32b
--- /dev/null
+++ b/app.py
@@ -0,0 +1 @@
+print("Hello, Git!")

Observe que a saída é muito mais curta e contém apenas o diff para app.py. A linha new file mode 100644 indica que este arquivo foi criado neste commit.

Comparando Dois Commits

Enquanto git show serve para visualizar as alterações dentro de um único commit, você pode usar git diff para ver as alterações cumulativas entre quaisquer dois commits. Isso é útil para ver tudo o que mudou entre dois pontos no tempo, como entre dois lançamentos.

Vamos comparar o commit inicial e o commit mais recente para ver todas as alterações feitas no projeto até agora. Você precisará dos hashes dos commits para o primeiro commit ("Initial commit: Add README.md") e o último commit ("Add application file").

Use o comando git diff com os dois hashes.

git diff <first-commit-hash> <last-commit-hash>

Por exemplo, se o hash do seu primeiro commit for i7j8k9l e o último for a1b2c3d:

git diff i7j8k9l a1b2c3d

A saída mostrará um diff combinado de todas as alterações que ocorreram entre esses dois commits.

diff --git a/README.md b/README.md
index ...
--- a/README.md
+++ b/README.md
@@ -1 +1,3 @@
 ## My Project
+
+This is a simple project to demonstrate Git.
diff --git a/app.py b/app.py
new file mode 100644
index 0000000..d95f32b
--- /dev/null
+++ b/app.py
@@ -0,0 +1 @@
+print("Hello, Git!")

Esta saída mostra tanto a atualização do README.md quanto a criação do app.py, dando a você uma visão completa da evolução do projeto entre esses dois pontos.

Resumo

Neste laboratório, você aprendeu a navegar pelo histórico de um repositório Git e inspecionar alterações. Você praticou o uso de git log para listar commits, git show para visualizar os detalhes e alterações dentro de um único commit (tanto para o commit inteiro quanto para um arquivo específico), e git diff para comparar as diferenças entre dois commits. Esses comandos são fundamentais para entender as alterações de código, depurar e colaborar efetivamente em qualquer projeto baseado em Git.