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.