Conflito ao mesclar branches no Git
No processo de fusão de duas branches, podem ocorrer conflitos
se em cada branch tivermos alterado o mesmo arquivo.
Vamos considerar a situação em que em ambas as
branches master e test da
lição anterior nós alteramos e fizemos
um commit no mesmo arquivo file.txt.
E então aplicamos o comando de merge:
git merge test
Como resultado, veremos um erro:
Auto-merging file.txt
CONFLICT (content): Merge conflict in file.txt
Automatic merge failed; fix conflicts and then commit the result.
Além disso, no arquivo modificado veremos os marcadores de conflito:
<<<<<<< HEAD
aqui estarão as alterações da branch master
=======
aqui estarão as alterações da branch test
>>>>>>> test
Na parte superior da mensagem estão indicadas as alterações feitas na branch principal atualmente, na parte inferior - na segunda branch, que queremos mesclar com a primeira. Para resolver o conflito, precisamos levar o conteúdo do arquivo a um estado comum, previamente removendo (manualmente no editor!) todas as marcações de conflito que o Git deixou nele.
Depois de resolvermos o conflito
(ou seja, deixarmos o código correto no arquivo),
vamos indexar nosso arquivo e fazer um commit
na branch master, na qual nós
estamos no momento:
git add file.txt
git commit -m "fusão"
Só depois disso podemos alternar
para a segunda branch test e fazer
todas as mesmas operações que na branch master,
inclusive substituir o conteúdo do arquivo
file.txt pelo mesmo que está na primeira branch:
git add file.txt
git commit -m "fusão"
Agora podemos alternar novamente para a branch principal e mergir nela a segunda:
git switch master
git merge test
Crie intencionalmente um conflito ao mesclar branches. Em seguida, resolva-o.