Pular para o conteúdo principal

Tutorial de mesclagem do Git: Um guia abrangente com exemplos

Saiba como mesclar ramificações de forma eficiente no Git com este tutorial passo a passo. Explore diferentes estratégias de mesclagem, resolva conflitos e aplique as práticas recomendadas para manter o histórico do Git limpo.
Actualizado 13 de mar. de 2025  · 15 min de leitura

Se você já trabalhou em um projeto com vários desenvolvedores (ou mesmo se já gerenciou vários recursos), sabe que a ramificação é essencial para manter as coisas organizadas. Mas, em algum momento, todos esses ramos precisam voltar a se unir - e é aí que entra o git merge.

Neste tutorial, apresentarei os diferentes tipos de mesclagens do Git, como elas funcionam e como resolver conflitos de mesclagem quando as coisas não saem como planejado. Por fim, compartilharei algumas práticas recomendadas para ajudar você a usar o git merge de forma eficaz e evitar armadilhas comuns.

O que é o git merge?

Em uma configuração de equipe, os desenvolvedores geralmente trabalham em diferentes recursos, correções de bugs e melhorias em ramificações separadas. Após a conclusão do trabalho, eles usam o site git merge para integrar essas alterações.

A mesclagem combina as alterações de um ramo em outro, preservando o histórico completo da versão. Ele unifica o histórico de commits de ambas as ramificações.

Vamos entender o fluxo de trabalho por meio de um exemplo.

Um commit de base comum diverge em duas ramificações, levando a dicas principais e de recursos separadas antes da fusão. Imagem do autor.

Na imagem acima, as ramificações principal e de recursos criaram novos commits desde que a ramificação de recursos foi criada.

Uma ramificação de recurso e a ramificação principal divergem de uma base comum e são posteriormente combinadas em um único commit de mesclagem. Imagem do autor.

O Git merge pega todos os novos commits de ambas as ramificações, a partir de sua base comum, e os combina em um único commit de merge. Em seguida, ele atualiza o ponteiro principal para apontar para esse novo commit de mesclagem.

Uso básico do comando git merge

A mesclagem não é apenas executar o git merge e encerrar o dia - há algumas etapas importantes para que você coloque tudo em ordem primeiro. Nesta seção, você verá todo o processo, desde a preparação das ramificações até a conclusão de uma mesclagem bem-sucedida.

Etapa 1: Preparando-se para uma fusão

Somente as alterações confirmadas em ambos os ramos podem ser mescladas. Portanto, use o comando git status para verificar se há alterações não confirmadas e confirme-as usando o comando git commit antes de fazer a mesclagem. 

Etapa 2: Verificar a ramificação de destino

Antes de executar git merge, você deve mudar para o ramo de destino, geralmente o ramo principal. Você pode mudar para o ramo principal usando git checkout main ou git switch main

Etapa 3: Mesclando uma ramificação

Certifique-se de que a ramificação principal esteja atualizada com o repositório remoto. Para isso, execute git pull origin main.

Agora, você está finalmente pronto para mesclar o ramo de recursos com o ramo principal! Você pode usar um comando como o seguinte:

git merge feature-branch

Etapa 4: Resolução de conflitos de mesclagem (se houver)

O Git tenta resolver automaticamente os conflitos que podem ocorrer durante as mesclagens. No entanto, pode ser necessária uma intervenção manual quando você não conseguir resolver o conflito por conta própria. 

Por exemplo, se as mesmas linhas no mesmo arquivo forem modificadas em ramificações diferentes, poderão ocorrer conflitos de mesclagem. 

Quando o Git detecta um conflito, ele pausa a mesclagem e pede que você o resolva. Nesse caso:

  • Execute git status para ver quais arquivos têm conflitos. 
  • Abra esses arquivos.
  • Revise as linhas de código conflitantes e atualize-as para garantir a consistência em ambas as ramificações.

Etapa 5: Confirmação da mesclagem

Depois de resolver os conflitos, use o comando git add . para preparar os arquivos corrigidos. Em seguida, conclua a mesclagem fazendo o commit com uma mensagem: 

git merge -m “resolved conflicts”

Nas seções posteriores, veremos como resolver conflitos de mesclagem com mais profundidade.  

Para os iniciantes, aqui está uma folha de dicas completa do Git que abrange todos os comandos essenciais para criar, atualizar, excluir e gerenciar ramificações. 

Se você já tem alguma experiência com o Git e precisa se atualizar sobre os comandos importantes, confira este tutorial sobre os comandos mais usados do Git com exemplos.

Aprenda hoje os fundamentos do Git

Para iniciantes: Controle de versão principal usando o Git.
Comece a aprender de graça

Tipos de mesclagens no Git

Entender os tipos de merge do Git ajudará você a escolher a estratégia certa para o seu cenário. Aqui estão as três abordagens comuns para a fusão. 

Fusão de avanço rápido

Quando o branch de base não tem novos commits desde que o branch de recurso foi criado, o Git usa uma abordagem de avanço rápido. 

Se o seu novo ramo de recursos for atualizado enquanto o ramo principal permanecer inalterado, o commit de mesclagem moverá o ponteiro de cabeçalho do ramo principal para o ramo de recursos. 

Nenhum commit de mesclagem adicional é criado, o que mantém o histórico de commits limpo e linear.

Mesclagem de três vias

Se as ramificações de base e de recurso tiverem novos commits, o Git encontrará seu ancestral comum e criará um novo commit de mesclagem. Esse commit combina os históricos de ambas as ramificações, preservando o histórico individual da ramificação de recursos e da ramificação principal.

No exemplo abaixo, "E" e "G" são novos commits no ramo principal depois que o ramo de recursos foi criado. 

      C---D---F (feature-branch)
     /         
A---B---E---G (main) 

Um novo commit de mesclagem, "M", é criado, preservando o histórico das ramificações principal e de recursos. 

       C---D---F
      /         \
 A---B---E---G---M (main)

Fusão de abóbora

Squash merge comescla todas as alterações de um ramo de recurso em um único commit e o mescla no ramo de destino. Ele não preserva o histórico de commits individuais do ramo de recursos. 

git merge --squash feature_branch_name

Uma mesclagem de squash é especialmente útil para evitar a desordem de vários commits pequenos e, ao mesmo tempo, manter o estado final do recurso no branch de destino.

Mesclagem de várias ramificações

Ao trabalhar em projetos grandes, talvez você precise mesclar várias ramificações - uma de cada vez ou todas de uma vez. A abordagem que você escolher depende do seu fluxo de trabalho e da complexidade das alterações. Nesta seção, explorarei os dois métodos e quando usá-los de forma eficaz.

Mesclar mais de uma ramificação sequencialmente

Para mesclar ramificações uma a uma, use o comando merge sequencialmente para cada ramificação de recurso. 

Etapa 1: Alterne para o ramo de destino no qual você deseja mesclar as alterações.

git checkout target_branch_name

Etapa 2: Faça a fusão do primeiro ramo de recursos, conforme mostrado abaixo.

git merge feature_branch_1

Etapa 3: Faça a fusão do segundo ramo de recursos conforme mostrado.

git merge feature_branch_2

Repita esse processo até que todas as outras ramificações sejam mescladas.

Mesclando mais de uma ramificação em paralelo

Siga estas etapas para mesclar várias ramificações de recursos de uma só vez.

Etapa 1: Alterne para o ramo de destino no qual você deseja mesclar as alterações.

git checkout target_branch_name

Etapa 2: Execute o seguinte comando com várias ramificações de recursos 

git merge feature_branch_1 feature_branch_2 feature_branch_3

Quando o Git mescla várias ramificações em paralelo, podem ocorrer conflitos. Se isso acontecer, o Git solicitará que você os resolva manualmente.

Tratamento de conflitos com várias mesclagens

A mesclagem de várias ramificações nem sempre é simples, especialmente quando uma ramificação depende de outra. 

Por exemplo, mesclar feature_x em main antes de feature_y pode gerar conflitos. Da mesma forma, se diferentes ramificações modificarem os mesmos arquivos, as mesclagens paralelas podem levar a conflitos que precisam de uma resolução cuidadosa.

Siga estas etapas para resolver conflitos de mesclagem:

  • Etapa 1: Execute git status para ver quais arquivos causam conflitos.
  • Etapa 2: Abra os arquivos conflitantes e corrija-os.
  • Etapa 3: Adicione as alterações ao estágio e faça o commit.

Compreensão do histórico de commits de mesclagem 

Para conflitos complexos, você pode precisar de mais informações do que as fornecidas pelo site git status. Nesses casos, você pode usar comandos como git log ou git show para se aprofundar no histórico.

  • git logMostra todo o histórico de commits, inclusive os commits de mesclagem. Isso ajuda a identificar uma mescla específica onde o problema ocorre. 
  • git show: Se você encontrar um commit de mesclagem suspeito com o comando acima, use git show para inspecioná-lo. Esse comando fornece uma visão detalhada do commit, mostrando o que foi alterado durante a mesclagem. Ele também gera um identificador exclusivo para a ramificação principal antes de ocorrer uma mesclagem específica.
  • git diff: Você pode usar os identificadores exclusivos dos ramos pai e mesclado dos comandos anteriores e usar git diff para comparar as alterações entre esses dois estados.

Práticas recomendadas de mesclagem do Git

Às vezes, a mesclagem pode ser confusa, especialmente quando vários desenvolvedores estão trabalhando na mesma base de código. 

Embora tenhamos abordado como resolver conflitos quando eles surgem, a melhor abordagem é evitá-los antes que aconteçam. Nesta seção, abordaremos dicas práticas para manter as mesclagens suaves e o histórico do Git limpo.

Mantenha as filiais pequenas e focadas

Ramos grandes aumentam o risco de sobreposição de edições, o que gera mais conflitos. Para minimizar isso, trabalhe em um único recurso por ramificação e mantenha as ramificações pequenas e focadas.

Extrair e mesclar com frequência

Puxe as alterações mais recentes do repositório remoto para manter sua ramificação base atualizada antes de fazer o merge. Faça pull de atualizações regularmente do branch principal para o branch de recursos para mantê-los sincronizados. Isso evita conflitos grandes e complexos mais tarde.

Usar as ferramentas de mesclagem integradas do Git

Em vez de editar arquivos manualmente, você pode usar as ferramentas internas do git para resolver conflitos em uma interface visual. Quando você executa git mergetool, três opções são abertas:

  • LOCAL - Versão do ramo principal. Ao escolher essa opção, você mantém o conteúdo do arquivo conflitante do ramo principal e ignora as alterações do ramo de recursos. 
  • REMOTE - A versão da ramificação do recurso. Ao selecionar essa opção, você aplica o conteúdo do ramo de recursos ao arquivo em conflito.
  • BASE - combinará as alterações dos arquivos conflitantes de ambas as ramificações e as mesclará. 

Mesclar em ordem

Ao mesclar várias ramificações, a ordem é importante, especialmente se um recurso depender de outro. Se feature_x depender de feature_y, mesclar feature_x primeiro pode gerar conflitos. Para evitar isso, sempre mescle as ramificações na ordem de suas dependências para manter o processo tranquilo e minimizar os conflitos.

Fusão de abóbora 

Conforme mencionado anteriormente, a mesclagem por squash consolida todos os commits de uma ramificação de recurso em um único commit, mantendo o histórico de commits limpo e reduzindo possíveis conflitos de mesclagem.

Uma abordagem alternativa é o rebasing, que aplica as alterações do ramo de recursos diretamente sobre o ramo de base. Isso cria um histórico linear e evita commits de mesclagem desnecessários. No entanto, ambos os métodos reescrevem o histórico e não preservam os commits individuais do ramo de recursos.

Conclusão

Neste tutorial de mesclagem do Git, abordamos tudo, desde os conceitos básicos de mesclagem até as práticas recomendadas para evitar conflitos. Entender como usar o git merge de forma eficaz ajuda as equipes a colaborar sem problemas, mantendo os fluxos de trabalho tranquilos e o histórico de código limpo.

Se você deseja aprofundar suas habilidades no Git, confiraeste curso de Git intermediário para dominarfluxos de trabalho e técnicas mais avançados!

Aprenda hoje os fundamentos do Git

Para iniciantes: Controle de versão principal usando o Git.

Perguntas frequentes

Qual é a diferença entre o git merge e o git rebase?

Embora ambos os comandos integrem as alterações de um ramo em outro, o git merge cria um novo commit de mesclagem, preservando o histórico de ambos os ramos. Por outro lado, o git rebase aplica commits do ramo de recursos diretamente no ramo de destino, resultando em um histórico de commits linear, mas reescrevendo o histórico no processo.

Posso desfazer uma mesclagem no Git?

Sim, se você ainda não tiver feito a mesclagem, poderá usar:

git reset --hard HEAD~1

Isso redefine sua ramificação para o estado anterior à mesclagem. Se a mesclagem já tiver sido enviada, você precisará usar git revert para desfazer as alterações com segurança e manter o histórico intacto.

Como faço para mesclar uma ramificação remota em minha ramificação local?

Para mesclar um ramo remoto em seu ramo local, siga estas etapas:

git fetch origin  

git checkout my-branch  

git merge origin/feature-branch 

Isso garante que você esteja mesclando as atualizações mais recentes do repositório remoto.

Como posso evitar conflitos de mesclagem desnecessários?

Para minimizar os conflitos:

  • Faça regularmente as alterações mais recentes antes de iniciar um novo trabalho (git pull).
  • Faça a mesclagem na ordem das dependências se várias ramificações dependerem umas das outras.
  • Use sinalizadores de recursos para integrar o código progressivamente em vez de ramificações de longa duração.

O que acontece quando eu mesclo uma ramificação que já foi mesclada?

Se uma ramificação já tiver sido mesclada, a execução de git merge feature-branch novamente não mudará nada. O Git reconhecerá que as ramificações compartilham um histórico comum e simplesmente confirmará que tudo está atualizado.

Posso mesclar várias ramificações de uma vez?

Não, o Git não é compatível com a mesclagem de várias ramificações em um único comando. Você precisa mesclá-los sequencialmente:

git merge feature-branch-1  

git merge feature-branch-2  

Se necessário, você pode criar uma ramificação de integração na qual mescla várias ramificações e, em seguida, mescla essa ramificação em main.

Devo usar o git merge --no-ff ou o git merge --ff?

  • --no-ff (sem mesclagem rápida) cria um novo commit de mesclagem, facilitando o rastreamento do histórico da ramificação.
  • --ff (mesclagem de avanço rápido) aplica as alterações diretamente, se possível, evitando commits extras.

Para projetos em que o rastreamento de ramificações de recursos é importante, recomenda-se o site --no-ff.


Srujana Maddula's photo
Author
Srujana Maddula
LinkedIn

Srujana é redatora freelancer de tecnologia e tem um diploma de quatro anos em Ciência da Computação. Escrever sobre vários tópicos, incluindo ciência de dados, computação em nuvem, desenvolvimento, programação, segurança e muitos outros, é algo natural para ela. Ela gosta de literatura clássica e de explorar novos destinos.

Temas

Saiba mais sobre o Git com estes cursos!

Certificação disponível

Curso

Fundamentos do Git

4 hr
46.1K
Familiarize-se com o Git para controle de versão. Explore como você pode rastrear, comparar, modificar e reverter arquivos, além de colaborar com colegas usando o Git.
Ver DetalhesRight Arrow
Iniciar curso
Ver maisRight Arrow
Relacionado
Git

blog

O que é Git? Manual completo do Git

Saiba mais sobre o sistema de controle de versão mais conhecido e por que é uma ferramenta de colaboração indispensável para cientistas de dados e programadores.
Summer Worsley's photo

Summer Worsley

14 min

Tutorial

Tutorial do GitHub e do Git para iniciantes

Um tutorial para iniciantes que demonstra como funciona o controle de versão do Git e por que ele é crucial para projetos de ciência de dados.
Abid Ali Awan's photo

Abid Ali Awan

9 min

Tutorial

Git Rename Branch: Como renomear uma filial local ou remota

Saiba como renomear ramificações locais e remotas do Git usando o terminal ou a interface gráfica do usuário (GUI) de clientes populares como o GitHub.

Tutorial

Tutorial de push e pull do GIT

Saiba como realizar solicitações Git PUSH e PULL por meio do GitHub Desktop e da linha de comando.

Olivia Smith

13 min

Tutorial

Git Pull Force: Como substituir uma ramificação local por uma remota

Saiba por que o git pull --force não é a melhor maneira de substituir uma ramificação local pela versão remota e descubra o método adequado usando git fetch e git reset.

Tutorial

Git Prune: O que é o Git Pruning e como usar o Git Prune

O Git prune é um comando do Git que remove objetos do repositório que não são mais acessíveis a partir de qualquer commit ou branch, ajudando a liberar espaço em disco.
Ver maisVer mais