Como Verificar se um Branch Git Possui Commits Específicos

GitBeginner
Pratique Agora

Introdução

Neste laboratório, aprenderemos como verificar se um branch Git contém commits específicos. Começaremos explorando o comando git log e suas opções de filtragem para pesquisar commits com base no conteúdo da mensagem ou no autor. Em seguida, utilizaremos o comando git branch --contains para determinar eficientemente quais branches incluem um commit específico. Por fim, verificaremos nossas descobertas, checando diretamente a presença de um commit usando seu hash.

Executar git log para Pesquisar Commits

Nesta etapa, exploraremos como usar o comando git log para pesquisar commits específicos no histórico do seu projeto. À medida que seu projeto cresce e você faz mais commits, a saída de git log pode se tornar muito longa. Git oferece opções poderosas para filtrar e pesquisar este histórico.

Primeiramente, vamos garantir que estamos no diretório do nosso projeto:

cd ~/project/my-time-machine

Agora, vamos adicionar mais alguns commits para termos um histórico para pesquisar. Adicionaremos um novo arquivo e faremos uma alteração no existente.

Crie um novo arquivo:

echo "This is my second file." > second_file.txt

Adicione e faça o commit do novo arquivo:

git add second_file.txt
git commit -m "Add a second file"

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

[master a1b2c3d] Add a second file
 1 file changed, 1 insertion(+)
 create mode 100644 second_file.txt

Agora, vamos modificar o arquivo message.txt:

echo "Adding another line." >> message.txt

Adicione e faça o commit da alteração:

git add message.txt
git commit -m "Update message.txt"

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

[master e4f5g6h] Update message.txt
 1 file changed, 1 insertion(+)

Agora que temos múltiplos commits, vamos usar git log para ver o histórico:

git log

Você verá todos os três commits listados. Pressione q para sair da visualização do log.

Para pesquisar commits que contêm uma palavra específica na mensagem do commit, podemos usar a opção --grep. Vamos pesquisar commits com a palavra "message":

git log --grep "message"

Este comando mostrará apenas os commits cujas mensagens contêm a palavra "message". Você deve ver o primeiro e o terceiro commit.

Você também pode pesquisar commits por autor usando a opção --author. Vamos pesquisar commits feitos por "Jane Doe" (o nome que configuramos na configuração):

git log --author "Jane Doe"

Isso mostrará todos os commits feitos pelo autor "Jane Doe". Neste caso, deve mostrar todos os três commits.

Usar git log com opções como --grep e --author é essencial para navegar em projetos maiores e encontrar alterações ou contribuições específicas. É como ter um poderoso mecanismo de busca para o histórico do seu projeto!

Usar git branch --contains para Verificação de Commit

Nesta etapa, aprenderemos como usar o comando git branch --contains para descobrir quais branches contêm um commit específico. Isso é útil quando você tem múltiplos branches e deseja saber onde uma alteração em particular existe.

Primeiro, certifique-se de estar no diretório do seu projeto:

cd ~/project/my-time-machine

Vamos criar um novo branch para demonstrar este comando. Vamos chamá-lo de feature-branch:

git branch feature-branch

Este comando cria um novo branch, mas não muda para ele. Você pode ver seus branches usando git branch:

git branch

Você deve ver algo como isto, com master destacado (indicando que é o branch atual):

* master
  feature-branch

Agora, vamos obter o hash do nosso primeiro commit. Podemos usar git log --oneline para ver um log condensado com hashes de commit:

git log --oneline

Você verá uma saída semelhante a esta (seus hashes serão diferentes):

e4f5g6h (HEAD -> master) Update message.txt
a1b2c3d Add a second file
abcdef0 Send a message to the future

Copie o hash do primeiro commit ("Send a message to the future"). No exemplo acima, é abcdef0.

Agora, vamos usar git branch --contains com o hash do primeiro commit:

git branch --contains abcdef0

Substitua abcdef0 pelo hash real do seu primeiro commit.

A saída deve mostrar tanto master quanto feature-branch:

* master
  feature-branch

Isso nos diz que o commit "Send a message to the future" existe nos branches master e feature-branch. Isso faz sentido porque criamos feature-branch enquanto estávamos no branch master, e o primeiro commit já fazia parte do master.

Agora, vamos obter o hash do último commit ("Update message.txt"). No exemplo acima, é e4f5g6h.

Use git branch --contains com o hash do último commit:

git branch --contains e4f5g6h

Substitua e4f5g6h pelo hash real do seu último commit.

A saída deve mostrar apenas master:

* master

Isso ocorre porque o último commit foi feito no branch master depois que criamos feature-branch. Portanto, feature-branch não contém este commit.

O comando git branch --contains é uma ferramenta poderosa para entender a relação entre commits e branches, ajudando você a rastrear onde alterações específicas foram integradas.

Verificar com Commit Hash (ID do Commit)

Nesta etapa, praticaremos o uso de hashes de commit para nos referir a pontos específicos no histórico do nosso projeto. Cada commit no Git tem um hash único, que age como sua impressão digital. Você pode usar este hash para visualizar os detalhes de um commit específico ou até mesmo voltar a esse ponto no tempo.

Primeiro, certifique-se de estar no diretório do seu projeto:

cd ~/project/my-time-machine

Vamos visualizar o log de commits novamente para obter os hashes:

git log --oneline

Você verá uma saída semelhante a esta (seus hashes serão diferentes):

e4f5g6h (HEAD -> master) Update message.txt
a1b2c3d Add a second file
abcdef0 Send a message to the future

Agora, vamos visualizar os detalhes do primeiro commit usando seu hash. Copie o hash do primeiro commit ("Send a message to the future"). No exemplo acima, é abcdef0.

Use o comando git show seguido pelo hash do commit:

git show abcdef0

Substitua abcdef0 pelo hash real do seu primeiro commit.

Este comando exibirá informações detalhadas sobre esse commit específico, incluindo o autor, a data, a mensagem do commit e as alterações introduzidas nesse commit. Você verá que o arquivo message.txt foi criado neste commit.

Pressione q para sair da visualização git show.

Agora, vamos visualizar os detalhes do segundo commit ("Add a second file"). Copie seu hash da saída de git log --oneline. No exemplo acima, é a1b2c3d.

Use git show com o hash do segundo commit:

git show a1b2c3d

Substitua a1b2c3d pelo hash real do seu segundo commit.

Isso mostrará os detalhes do segundo commit, onde o second_file.txt foi criado.

Finalmente, vamos visualizar os detalhes do último commit ("Update message.txt"). Copie seu hash. No exemplo acima, é e4f5g6h.

Use git show com o hash do último commit:

git show e4f5g6h

Substitua e4f5g6h pelo hash real do seu último commit.

Isso mostrará os detalhes do último commit, onde uma linha foi adicionada a message.txt.

Usar git show com hashes de commit permite que você inspecione o conteúdo e as alterações de qualquer commit específico no histórico do seu projeto. Isso é incrivelmente útil para depuração, compreensão de como um recurso foi implementado ou simplesmente para revisar trabalhos anteriores.

Resumo

Neste laboratório, aprendemos como verificar se um branch do Git contém commits específicos. Começamos explorando o comando git log e suas opções de filtragem, como --grep para pesquisar mensagens de commit e --author para pesquisar por autor, a fim de localizar commits dentro do histórico do projeto.

Em seguida, aprenderemos como usar o comando git branch --contains para verificar diretamente se um branch inclui um commit em particular e, finalmente, verificaremos isso usando o hash do commit.