24. Criando um conflito
Metas
- Criar um conflito de mudanças no branch
main
.
Quando você mescla dois ramos, o Git tenta mover as alterações de um ramo para o outro. Se a mesma parte do arquivo tiver sido alterada em ambos os ramos, o Git poderá não ser capaz de combinar as alterações automaticamente. Nesse caso, o Git informará um conflito e pedirá que você o resolva manualmente. Nesta lição, simularemos um conflito e depois aprenderemos a resolvê-lo.
Na vida real, os conflitos de mesclagem acontecem regularmente quando se trabalha em equipe. Por exemplo, você e seu colega começaram a trabalhar em dois recursos diferentes, afetando os mesmos arquivos. Seu colega terminou o trabalho primeiro e mesclou as alterações dele com a ramificação main
. Agora você também deseja mesclar suas próprias alterações na ramificação main
. Mas o ramo main
agora é diferente daquele em que você começou a trabalhar — há um novo código, enviado pelo seu colega. Muito provavelmente, o Git não conseguirá mesclar suas alterações automaticamente e pedirá ajuda humana.
01 Voltar para o main e criar o conflito
Lembra-se de que, em nossa ramificação main
, a página ainda se chama hello.html
? Volte para a ramificação main
e faça as seguintes alterações:
git switch main
Arquivo: hello.html
<!-- Author: Alexander Shvets (alex@githowto.com) -->
<html>
<head>
<title>Hello World Page</title>
</head>
<body>
<h1>Hello, World!</h1>
<p>Let's learn Git together.</p>
</body>
</html>
Execute
git add hello.html
git commit -m "Added meta title"
02 Visualize os branches
Execute
git log --all --graph
Resultado
$ git log --all --graph
* 85c14e9 2023-11-28 | Added meta title (HEAD -> main) [Alexander Shvets]
| * a33deed 2023-11-28 | Merge branch 'main' into style (style) [Alexander Shvets]
| |\
| |/
|/|
* | ee16740 2023-11-28 | Added README [Alexander Shvets]
| * 0ee0113 2023-11-28 | Renamed hello.html; moved style.css [Alexander Shvets]
| * 903eb1d 2023-11-28 | Included stylesheet into hello.html [Alexander Shvets]
| * 555372e 2023-11-28 | Added css stylesheet [Alexander Shvets]
|/
* 9288a33 2023-11-28 | Added copyright statement with email [Alexander Shvets]
* b7614c1 2023-11-28 | Added HTML header (tag: v1) [Alexander Shvets]
* 46afaff 2023-11-28 | Added standard HTML page tags (tag: v1-beta) [Alexander Shvets]
* 78433de 2023-11-28 | Added h1 tag [Alexander Shvets]
* 5836970 2023-11-28 | Initial commit [Alexander Shvets]
Depois de um commit "Added README" o branch main
foi fundido com o branch style
, mas existe um commit aditional do main
, que não foi fundido com o branch style
.
03 Próximo
A última modificação feita no main
entra em conflito com algumas mudanças do style
. No próximo passo nós vamos resolver esse conflito.