Como resolver conflitos de Merge no GitHub
Tags: braziliandevs, github, git, githubbrasil
Published: 2023-03-02 17:35:13


Cá está você, uma pessoa iniciando em sua carreira de programação, e finalmente você tem a chance de trabalhar em um projeto colaborativo. Você vai tode feliz e com orgulho, dar merge na primeira issue em que você trabalhou. Mas ELE aparece. Sim, o temido Conflito de merge!

  

A primeira vez que eu me deparei com isso (e a segunda, e também na terceira e talvez na décima) eu confesso que dei uma surtadinha.

  

Hoje eu sei resolver esses conflitos (quase sempre) e vim ensinar pra vocês algumas maneiras de fazer isso.

  

Nota: As dicas abaixo são apenas para Conflitos de Merge, para conflitos da sua vida pessoal, por favor procure uma pessoal profissional em psicologia.

  
  

## Quando o conflito acontece…

![o branch tem conflitos para sere resolvidos](https://lh5.googleusercontent.com/_zU_Jyt6BGpBOpS7NZRudteRoRmlRQZKcrxGZL5LmqvosTaVMVujO88tmoEUFwf7fKgeaPXqNGJ2tzLyj2mM3zv4wQ708tSIgk9dH04xRE7PYcFUNbTsX8qT-S1ICmbIWE-DNnHRnkk1XxaFoOkNPBk)

Respire fundo!

Eu sei, quando isso aparece pelas primeiras vezes, dá aquela sensação de que a gente fez algo de errado né?

E dá um super medo de fazer alguma besteira e apagar código alheio, mas respira. A gente vai resolver isso aqui.

  
  

## O que aconteceu?

Antes de resolver os conflitos, é uma boa ideia tentar entender o porquê dele ter ocorrido.

Não, você não fez algo de errado (eu acho).

Sistemas de controle de versionamento, como o Git, são ferramentas super legais que te ajudam a saber o que aconteceu no seu código, mudanças que foram feitas, quem fez o quê.

Mas não é mágica, e às vezes ele precisa de uma ajudinha.

  
  

No geral, conflitos de merge acontecem quando duas ou mais pessoas fazem modificações que confundem o git, e ele não sabe qual das 2 opções aplicar, como quando alguém deleta um arquivo ou uma linha, mas outra pessoa que ainda não tem o código atualizado vai lá e edita o arquivo ou linha deletada.

No exemplo que eu estou usando, o problema é que duas pessoas (eu e meu alter ego) fizemos modificações diferentes na mesma linha do arquivo.

  

## Vamos ajudar o git!

O que causa um conflito de merge é quando o git fica confuso como nos exemplos que mencionei acima, e nossa missão aqui é ajudar o git!

Hoje eu vou explicar como fazer isso dentro do Github, mas resolver conflitos dentro do VS Code é bem parecido.

No Github, quando o conflito acontece, nós vemos isso aqui:

![os conflitos  tem que serresolvidos](https://lh4.googleusercontent.com/3qdrR0xLfIHm42KKoPIYbfxAZMrEtATd0ZOJRykIFqT1kQIsYeIn4vfOtc3qLUuCC81e3CXGnqG7sijE8Mvnw4stCsqUVLeEvRcsM300xII3lre4fMWjN2fGb7JdDahSuKA_I4TJXIJOBXFmw5jhzDA)

Vamos começar clicando no botão no canto direito: Resolve conflicts.

### Entendendo o conflito

Isso vai nos levar para o nosso arquivo conflituoso, vamos estudá lo:

![conflitos](https://lh3.googleusercontent.com/Ub2ojF3S418xQObCR5ODkf-psdR884rIfDIEXNAIaxj86Fs-lLYZhZIFOq1pc5vWTW-CLh10EkbgTAc5RLg42Qnr-y9LbcuRiYNhZp2w-3qQ2vjXyUXJkayuKApMchr7Gb5VDEiDr2lVOnThTiCvp54)

O Github é um fofo que nos mostra, em vermelho, onde está o conflito. Ele nos indica onde ele começa e onde acaba. O código conflitante começa depois do <<<<<<< main e termina antes do próximo <<<<<<< main.

Como mencionei, o motivo do conflito aqui é que duas pessoas fizeram mudanças diferentes na mesma linha.

No caso, a mudança da pessoa 1 está na linha 8, acima do ======= e a mudança da pessoa 2 está na linha 10, abaixo do =======

  

### Resolvendo o conflito

Primeiramente temos que decidir qual das duas opções está correta. Nesse caso, eu quero que as duas mudanças sejam mantidas, as duas estão corretas, o único problema foi de estarem na mesma linha.

  

Para resolver esse conflito, mudamos o código entre os <<<<<<< main e deixamos ele da maneira esperada, removendo o =======

![arrumando conflitos](https://lh6.googleusercontent.com/qb2VJSU_lcDKoWJk9O2MqlPkVZYFoZMCI2zz9youZRGc05ea_VTLFRYT0qZifpRkb7N722s4r3ztWMQ80v0iB62mTKkfu08ZUdIlqfM7DatwwD_YMh1cUDvS8VU6zSEWV7x6OWlZ8oZV56VkRNIrMlE)

Conferimos se é isso mesmo e se estiver certinho, removemos os dois <<<<<<< main

![clique no canto uperior direito](https://lh5.googleusercontent.com/DD3bEzym3qRzJulptyqvnWlpvhWp49tT1-vuMnZII4BOUL_6G3StHL5sB0ApM6xRvsloZFIFvf1wOiuEtJIuBKjQyyUNvnR4chd2tfYAXJkk516Q09pBK25gJIdBAn-HhCWEavjpkuSQ9n7gBayquWg)

Agora lá no canto superior direito, clicamos em Mark as resolved e comitamos o merge.

  

O Github vai te avisar que esse commit vai para main, tem certeza que ta ok?

![eu entendo](https://lh6.googleusercontent.com/1YjBnBp7ikaekiD4Z56yWqi0b86b2UCE_tGIl-o8URnHwS-vckeXKuaxuLw6fGVYAG1wvJAPMAYHaQsYHPSnJdfGOj_Y2s_1WD2hMKJnP6SgSuLkiLSx7rcmZPugYQEa9SGj9NoGWGt8zo9qbifHkKk)

Eu entendo, pode updatear a main Github!

  

E ta dã, podemos fazer nossa Pull Request! Parabéns!

![não temos conflito](https://lh5.googleusercontent.com/jRnOAaCt73-cVjg7a8V6i-dr_iv2W8QuvuOKkTQn6RKNN0ZHdffPalez0ZNUPU5DP9S-dM_HKfRJd5AEn9cy_wkbBhL5px5ys8MDiLcOhBiQI-IyXUIc5pa4Cu2R7T1oyNdbRd8sMj_nCoQ49FIB5hE)

  

## Conclusão

E ai, bora resolver aquele conflito de merge que faz uma semana que tá lá mas você finge que não existe? Haha

O exemplo que eu dei foi de um conflito mais simples, mas é a base para resolver conflitos maiores, então espero que te ajude!