3.3.5 Exemplo Prático
Cenário
Teremos um repositório Git com um branch principal chamado main e um branch nova-feature. Ambos os branches modificam três arquivos:
arquivo1.txt→ Conflito (alterado em ambos os branches na mesma linha).arquivo2.txt→ Conflito (alterado em ambos os branches na mesma linha).arquivo3.txt→ Sem conflito (alterado apenas no branchnova-feature).
Passo a Passo
Passo 1: Crie o Repositório e os Arquivos
🔹 Linux/macOS
git init merge-exemplo
cd merge-exemplo
echo "Versão inicial do arquivo 1" > arquivo1.txt
echo "Versão inicial do arquivo 2" > arquivo2.txt
echo "Versão inicial do arquivo 3" > arquivo3.txt🔹 Windows (CMD/PowerShell)
git init merge-exemplo
cd merge-exemplo
echo Versão inicial do arquivo 1 > arquivo1.txt
echo Versão inicial do arquivo 2 > arquivo2.txt
echo Versão inicial do arquivo 3 > arquivo3.txtAgora, adicione os arquivos e faça o primeiro commit:
Passo 2: Crie e Modifique o Branch nova-feature
nova-featureCrie o branch nova-feature e faça alterações nele:
Altere os arquivos:
🔹 Linux/macOS
🔹 Windows (CMD/PowerShell)
Adicione os arquivos alterados e faço o commit:
Passo 3: Modifique o Branch main
mainVolte para o branch main e faça outras alterações nos mesmos arquivos:
Altere os arquivos:
🔹 Linux/macOS
🔹 Windows (CMD/PowerShell)
Adicione os arquivos alterados e faço o commit:
Passo 4: Inicie o Merge
Agora, tente mesclar o branch nova-feature no main:
O Git responderá com um erro porque há conflitos:
📌 O Git mesclará automaticamente o arquivo3.txt, mas os arquivos arquivo1.txt e arquivo2.txt precisarão ser resolvidos manualmente.
Passo 5: Verifique os Conflitos
Rode o comando:
Saída:
📌 O arquivo3.txt já foi mesclado automaticamente e está pronto. Os outros dois precisam ser corrigidos.
Passo 6: Resolva os Conflitos
Agora você precisa corrigir os conflitos nos arquivos arquivo1.txt e arquivo2.txt.
Rode o comando:
Saída:
Isso significa que ambos os arquivos foram modificados em ambos os branches na mesma parte do código, e o Git não sabe qual versão escolher.
Corrija o arquivo1.txt
arquivo1.txtSe abrir arquivo1.txt, verá algo assim:
Aqui está o que essas marcações significam:
<<<<<<< HEAD→ Parte que veio do branch atual (main)=======→ Separação entre as duas versões>>>>>>> nova-feature→ Parte que veio do branchnova-feature
Agora, é preciso escolher como você quer resolver. Existem três opções:
Manter a versão do
mainManter a versão do
nova-featureCombinar as duas versões (uma abordagem comum)
Escolha a opção 3 e remova os marcadores (<<<<<<<, =======, >>>>>>>).
Salve e feche o arquivo.
Corrija o arquivo2.txt
arquivo2.txtAbra arquivo2.txt e você verá algo parecido:
Novamente, existem três opções:
Manter a versão do
mainManter a versão do
nova-featureCombinar as duas versões
Escolha a opção 3 e removemos os marcadores (<<<<<<<, =======, >>>>>>>).
Salve e feche o arquivo.
Agora os arquivos corrigidos devem estar assim:
arquivo1.txt (resolvido)
arquivo2.txt (resolvido)
Passo 7: Marque os Conflitos como Resolvidos
Adicionamos os arquivos à área de stage para sinalizar ao Git que os arquivos não possuem mais conflitos:
📌 O arquivo3.txt já está pronto, então você não precisa mexer nele.
Passo 8: Finalize o Merge
Crie o commit de merge:
Agora o merge está concluído! 🚀
Passo 9: Conferir o Histórico
Rode:
Saída esperada:
O commit abc1234 representa o merge e contém:
Os arquivos corrigidos manualmente (
arquivo1.txtearquivo2.txt).O arquivo mesclado automaticamente (
arquivo3.txt).
Atualizado
Isto foi útil?

