Introdução
Neste laboratório, você aprenderá como verificar efetivamente se um branch Git foi totalmente mesclado em outro branch, focando especificamente no branch main. Esta é uma habilidade crucial para manter um repositório Git limpo e organizado.
Você começará usando o comando git branch --merged main para identificar os branches que estão totalmente integrados ao main. Em seguida, você verificará os resultados usando o comando git log main ^branch para confirmar que todos os commits do branch de destino estão presentes no main. Finalmente, você testará esses métodos com um branch parcialmente mesclado para entender os diferentes resultados.
Usar git branch --merged main
Nesta etapa, aprenderemos como usar o comando git branch --merged para ver quais branches foram totalmente integrados a outro branch. Este é um comando muito útil para manter seu repositório limpo e organizado.
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 chamado feature-branch e mudar para ele. Vamos simular a realização de algumas alterações neste branch.
git branch feature-branch
git checkout feature-branch
echo "Adding a new feature" >> feature.txt
git add feature.txt
git commit -m "Add new feature"
Você deve ver uma saída semelhante a esta após o commit:
[feature-branch a1b2c3d] Add new feature
1 file changed, 1 insertion(+)
create mode 100644 feature.txt
Agora, vamos voltar para o branch master e mesclar o feature-branch nele.
git checkout master
git merge feature-branch
Você deve ver uma saída indicando uma mesclagem bem-sucedida:
Updating e1f2g3h..a1b2c3d
Fast-forward
feature.txt | 1 +
1 file changed, 1 insertion(+)
create mode 100644 feature.txt
Agora que mesclamos o feature-branch no master, vamos usar git branch --merged para ver quais branches agora estão totalmente mesclados no master.
git branch --merged master
Este comando listará todos os branches que tiveram todos os seus commits incorporados no branch master. Você deve ver tanto master quanto feature-branch listados, indicando que feature-branch agora está totalmente mesclado no master.
Entender quais branches estão mesclados é importante porque ajuda a identificar os branches que podem ser excluídos com segurança, mantendo seu repositório organizado. É como saber quais missões secundárias em um jogo você completou e agora pode ignorar.
Verificar com git log main ^branch
Na etapa anterior, usamos git branch --merged para ver quais branches foram mesclados no master. Agora, vamos usar um comando diferente, git log, para verificar isso de outra perspectiva. O comando git log com a sintaxe main ^branch é uma maneira poderosa de ver os commits que estão em main, mas não em branch.
Primeiro, certifique-se de estar no diretório my-time-machine:
cd ~/project/my-time-machine
Agora, vamos usar git log para ver os commits que estão em master, mas não em feature-branch.
git log master ^feature-branch
Como mesclamos totalmente o feature-branch no master na etapa anterior, todos os commits do feature-branch agora também estão em master. Portanto, este comando deve mostrar os commits que estavam originalmente apenas no branch master antes da mesclagem. Ele não deve mostrar o commit "Add new feature" que fizemos no feature-branch.
Você deve ver uma saída semelhante a esta, mostrando apenas o(s) commit(s) inicial(is) do branch master:
commit e1f2g3h4i5j6k7l8m9n0o1p2q3r4s5t6u7v8w9x (HEAD -> master)
Author: Jane Doe <jane.doe@example.com>
Date: Mon Aug 7 10:00:00 2023 +0000
Send a message to the future
Se o feature-branch não estivesse totalmente mesclado, este comando mostraria os commits que estão em master, mas não em feature-branch, bem como quaisquer commits que estejam em feature-branch, mas não em master. O fato de o commit "Add new feature" não ser mostrado aqui confirma que ele agora está presente em master.
Esta sintaxe git log main ^branch é uma ótima maneira de confirmar visualmente se todos os commits de um branch estão presentes em outro. Ela ajuda você a entender a relação entre diferentes branches em seu repositório.
Testar com Branch Parcialmente Mesclada
Nas etapas anteriores, vimos como git branch --merged e git log main ^branch funcionam com um branch totalmente mesclado. Agora, vamos ver o que acontece com um branch que está parcialmente mesclado, o que significa que alguns, mas não todos, os seus commits foram integrados a outro branch.
Primeiro, certifique-se de estar no diretório my-time-machine:
cd ~/project/my-time-machine
Vamos criar um novo branch chamado partial-feature e mudar para ele:
git branch partial-feature
git checkout partial-feature
Agora, faremos dois commits neste novo branch:
echo "Adding part 1 of the feature" >> partial.txt
git add partial.txt
git commit -m "Add part 1"
echo "Adding part 2 of the feature" >> partial.txt
git add partial.txt
git commit -m "Add part 2"
Você deve ver uma saída semelhante a esta após os commits:
[partial-feature a1b2c3d] Add part 1
1 file changed, 1 insertion(+)
create mode 100644 partial.txt
[partial-feature e1f2g3h] Add part 2
1 file changed, 1 insertion(+)
Agora, vamos voltar para o branch master e mesclar apenas o primeiro commit de partial-feature. Podemos fazer isso usando git cherry-pick. Primeiro, precisamos do hash do commit do commit "Add part 1". Você pode encontrar isso executando git log partial-feature e copiando o hash do primeiro commit.
git checkout master
## Substitua <commit_hash> pelo hash real do commit "Add part 1"
git cherry-pick <commit_hash>
Você deve ver uma saída indicando que o cherry-pick foi bem-sucedido:
[master i1j2k3l] Add part 1
Date: Mon Aug 7 10:05:00 2023 +0000
1 file changed, 1 insertion(+)
create mode 100644 partial.txt
Agora, vamos usar git branch --merged master novamente:
git branch --merged master
Você deve ver master e feature-branch listados, mas não partial-feature. Isso ocorre porque partial-feature ainda tem o commit "Add part 2", que não foi mesclado no master. git branch --merged lista apenas os branches onde todos os commits estão presentes no branch de destino.
Finalmente, vamos usar git log master ^partial-feature:
git log master ^partial-feature
Este comando mostrará os commits que estão em master, mas não em partial-feature. Ele deve mostrar o(s) commit(s) inicial(is) de master, o commit "Add new feature" (que agora está em master) e o commit "Add part 1" (que fizemos cherry-pick). Ele não deve mostrar o commit "Add part 2", pois esse commit está apenas em partial-feature.
Isso demonstra como git branch --merged e git log main ^branch podem ajudá-lo a entender o status da mesclagem de seus branches, mesmo quando apenas alguns commits foram integrados.
Resumo
Neste laboratório, aprendemos como verificar se um branch do Git está totalmente mesclado em outro branch, especificamente main (ou master). Começamos usando o comando git branch --merged main, que lista todos os branches cujos commits estão totalmente incorporados ao branch main. Esta é uma maneira rápida de identificar branches que estão prontos para limpeza.
Em seguida, exploramos um método de verificação mais granular usando git log main ^branch. Este comando mostra os commits que estão em main, mas não no branch especificado. Se este comando não retornar nenhuma saída, ele confirma que todos os commits do branch estão presentes em main, verificando assim a mesclagem completa. Finalmente, testamos esses métodos com um branch parcialmente mesclado para entender a diferença na saída e solidificar ainda mais nossa compreensão de como determinar com precisão o status da mesclagem de um branch.



