Como Verificar se um Branch do Git Foi Mesclado

GitBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá como verificar efetivamente se um branch Git foi mesclado em outro branch. Exploraremos o método principal usando o comando git branch --merged, demonstrando seu uso e interpretando sua saída.

Além disso, verificaremos o status da mesclagem examinando o log Git para a presença de commits de mesclagem (merge commits) e testaremos o comportamento dos comandos com branches não mesclados para solidificar sua compreensão. Essa abordagem prática o equipará com as habilidades para gerenciar com confiança seus branches Git e manter um repositório limpo.

Use git branch --merged para Verificar

Nesta etapa, aprenderemos como usar o comando git branch --merged para ver quais branches foram totalmente integrados ao branch atual. Este é um comando muito útil para limpar seu repositório e entender o estado do seu projeto.

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 um novo branch e fazer um commit nele. Isso simulará um fluxo de trabalho comum onde você trabalha em uma funcionalidade em um branch separado.

git branch feature/add-greeting
git checkout feature/add-greeting
echo "Greetings from the feature branch!" >> greeting.txt
git add greeting.txt
git commit -m "Add greeting file"

Você deve ver uma saída semelhante a esta após o commit:

[feature/add-greeting a1b2c3d] Add greeting file
 1 file changed, 1 insertion(+)
 create mode 100644 greeting.txt

Agora, vamos voltar para o branch master:

git checkout master

Você deve ver uma saída indicando que você mudou de branch:

Switched to branch 'master'

Agora, vamos mesclar o branch feature/add-greeting no master:

git merge feature/add-greeting

Você deve ver uma saída indicando que a mesclagem foi bem-sucedida:

Updating a1b2c3d..e4f5g6h
Fast-forward
 greeting.txt | 1 +
 1 file changed, 1 insertion(+)
 create mode 100644 greeting.txt

Agora que mesclamos o branch feature/add-greeting no master, vamos usar git branch --merged para ver quais branches agora estão mesclados no branch atual (master).

git branch --merged

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

* master
  feature/add-greeting

O * indica o branch atual (master). A saída mostra que tanto master quanto feature/add-greeting estão listados. Isso significa que todos os commits de feature/add-greeting agora estão presentes no branch master.

Entender quais branches estão mesclados é importante porque ajuda a identificar branches que não são mais necessários e podem ser excluídos com segurança. Isso mantém seu repositório limpo e organizado.

Verificar com git log para Commit de Mesclagem

Na etapa anterior, mesclamos o branch feature/add-greeting no master. Agora, vamos usar o comando git log para ver o histórico de commits e confirmar que o commit de mesclagem está presente.

Certifique-se de que você ainda está no diretório ~/project/my-time-machine.

Execute o comando git log:

git log

Você deve ver uma lista de commits, com o mais recente no topo. Procure por uma mensagem de commit que indique uma mesclagem. Ela provavelmente se parecerá com isto:

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

    Merge branch 'feature/add-greeting'

commit a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9 (feature/add-greeting)
Author: Jane Doe <jane.doe@example.com>
Date:   Mon Aug 7 10:03:00 2023 +0000

    Add greeting file

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

    Send a message to the future

Observe o commit com a mensagem "Merge branch 'feature/add-greeting'". Este é o commit de mesclagem que o Git criou automaticamente quando mesclamos o branch feature/add-greeting no master. Este commit tem dois commits pai, indicados pela linha "Merge:". Um pai é o topo do branch master antes da mesclagem, e o outro é o topo do branch feature/add-greeting.

O comando git log é essencial para entender o histórico do seu projeto. Ele permite que você veja todos os commits, quem os fez, quando foram feitos e quais alterações foram incluídas em cada commit. Isso é incrivelmente valioso para depuração, acompanhamento do progresso e colaboração com outras pessoas.

Pressione q para sair da visualização do log.

Testar com Branches Não Mesclados

Nas etapas anteriores, vimos como git branch --merged mostra os branches que foram totalmente integrados. Agora, vamos ver o que acontece quando temos um branch que não foi mesclado no branch atual.

Certifique-se de que você está no diretório ~/project/my-time-machine e no branch master. Você pode verificar isso com git status.

Vamos criar um novo branch chamado feature/add-farewell e mudar para ele:

git branch feature/add-farewell
git checkout feature/add-farewell

Você deve ver uma saída indicando que você mudou de branch:

Switched to branch 'feature/add-farewell'

Agora, vamos criar um novo arquivo e fazer um commit neste branch:

echo "Farewell from the farewell branch!" > farewell.txt
git add farewell.txt
git commit -m "Add farewell file"

Você deve ver uma saída semelhante a esta após o commit:

[feature/add-farewell a1b2c3d] Add farewell file
 1 file changed, 1 insertion(+)
 create mode 100644 farewell.txt

Agora, vamos voltar para o branch master:

git checkout master

Você deve ver uma saída indicando que você mudou de branch:

Switched to branch 'master'

Agora estamos no branch master, e o branch feature/add-farewell contém um commit que não está presente no master.

Vamos usar git branch --merged novamente:

git branch --merged

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

* master
  feature/add-greeting

Observe que feature/add-farewell não está listado na saída. Isso ocorre porque o commit que fizemos em feature/add-farewell não foi mesclado no branch master.

Agora, vamos usar o comando git branch --no-merged. Este comando mostra os branches que não foram mesclados no branch atual.

git branch --no-merged

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

  feature/add-farewell

Esta saída mostra corretamente feature/add-farewell porque ele contém commits que não estão no branch master.

Os comandos git branch --merged e git branch --no-merged são ferramentas poderosas para gerenciar seus branches. Eles ajudam você a controlar quais branches estão finalizados e podem ser excluídos, e quais branches ainda estão em desenvolvimento e precisam ser mesclados.

Resumo

Neste laboratório, aprendemos como verificar se um branch do Git foi mesclado no branch atual. Começamos usando o comando git branch --merged, que lista todos os branches cujos topos são alcançáveis a partir do topo do branch atual, mostrando efetivamente quais branches foram totalmente integrados. Demonstramos isso criando um novo branch, fazendo um commit, mesclando-o no branch master e, em seguida, usando git branch --merged para confirmar a mesclagem.

Também exploramos como verificar a mesclagem usando git log, procurando o commit de mesclagem, e testamos o comando com branches não mesclados para entender a diferença na saída. Essa experiência prática proporcionou uma compreensão prática de como usar os comandos Git para gerenciar e entender o estado dos branches em um repositório.