Skip to content
Latchkey

O Que É um Merge no Git?

Um merge combina o histórico de dois branches, trazendo as mudanças de um para o outro e registrando como elas se juntaram.

O merge é como o trabalho feito em um branch se reúne à linha principal. O Git olha para os dois branches, descobre o ancestral comum e combina as mudanças. A maioria dos merges é tranquila, mas entender o que o Git está fazendo ajuda quando um conflito aparece ou quando um gate de CI bloqueia o merge.

Como um merge funciona

O Git encontra o ancestral comum dos dois branches e aplica as mudanças que cada lado fez desde aquele ponto. Se apenas um lado avançou, ele pode fazer fast-forward simplesmente movendo o ponteiro. Se ambos avançaram, ele cria um novo merge commit que tem os dois tips de branch como parents.

Fazendo merge na prática

Você muda para o branch no qual quer fazer merge, depois faz merge do outro branch.

Merging a feature into main
git switch main
git merge feature/checkout

Quando conflitos acontecem

Se ambos os branches mudaram as mesmas linhas de formas incompatíveis, o Git não pode decidir automaticamente e pausa com um conflito. Você o resolve editando as regiões marcadas, fazendo stage do resultado e completando o merge. A maioria dos merges não gera conflito, especialmente quando os branches têm vida curta.

Merges e CI/CD

Em um workflow de pull request, o merge é o momento em que o novo código entra no branch main, então é o lugar natural para impor qualidade. Status checks obrigatórios tornam um merge impossível até a CI passar, e um merge na main muitas vezes dispara um deploy. Ferramentas que testam o resultado mergeado, não apenas o branch, pegam problemas que só aparecem após a combinação.

Mantendo merges limpos

  • Faça merge ou rebase frequentemente para que os branches fiquem próximos da main.
  • Deixe a CI verificar o resultado do merge, não apenas o branch.
  • Use checks obrigatórios para que nada faça merge vermelho.
  • Prefira pull requests pequenos para manter conflitos raros e pequenos.

Principais conclusões

  • Um merge combina dois branches, fazendo fast-forward ou criando um merge commit.
  • Conflitos surgem apenas quando ambos os lados mudam as mesmas linhas de forma incompatível.
  • Em CI/CD, merges são onde status checks controlam a entrada de código na main.

Guias relacionados