Como resolver conflitos de Merge no GitHub

Pachi 🥑 - Mar 2 '23 - - Dev Community

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

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

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

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

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

clique no canto uperior direito

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

Eu entendo, pode updatear a main Github!

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

não temos conflito

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!

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .