Skip to content
Latchkey

O Que É um Conflito de Merge?

Um conflito de merge acontece quando o Git não consegue combinar automaticamente duas alterações porque ambas tocaram nas mesmas linhas de formas incompatíveis.

Um conflito de merge parece alarmante, mas é apenas o Git pedindo uma decisão. Quando duas branches alteram a mesma parte de um arquivo de formas diferentes, o Git não tem como saber qual versão você quer, então ele pausa e marca o ponto para você resolver. Saber ler e corrigir conflitos elimina a maior parte do medo.

Por que os conflitos ocorrem

O Git faz o merge das alterações automaticamente quando elas tocam em partes diferentes de um arquivo. Um conflito surge apenas quando ambas as branches editaram as mesmas linhas, ou uma apagou o que a outra modificou. Quanto mais duas branches divergem e quanto mais tempo vivem separadas, mais provável se torna um conflito.

Lendo os marcadores de conflito

O Git insere marcadores mostrando ambas as versões para que você possa escolher ou combiná-las.

A conflict in a file
<<<<<<< HEAD
const timeout = 30;
=======
const timeout = 60;
>>>>>>> feature/slow-network

Resolvendo um conflito

Você edita o arquivo para a versão que deseja, remove os marcadores, faz stage do resultado e conclui o merge. Ferramentas e editores podem ajudar mostrando os dois lados lado a lado, mas a decisão sobre qual alteração está correta é sempre sua.

Conflitos em CI/CD

O CI não consegue resolver conflitos por você, mas pode detectar as consequências. Algumas plataformas se recusam a fazer merge de um pull request que conflita com a base, e testar o resultado merged no CI revela conflitos lógicos que não são textuais de forma alguma, onde duas alterações se aplicam de forma limpa mas quebram uma à outra.

Reduzindo conflitos

  • Mantenha branches de vida curta e faça merge ou rebase com frequência.
  • Divida alterações grandes em pull requests menores.
  • Coordene quando várias pessoas editam os mesmos arquivos.
  • Traga a última main antes de finalizar uma branch.

Principais conclusões

  • Um conflito significa que o Git precisa que você escolha entre duas alterações nas mesmas linhas.
  • Os marcadores de conflito mostram ambas as versões; você edita, faz stage e conclui o merge.
  • Branches curtas e integração frequente mantêm os conflitos raros e pequenos.

Guias relacionados