Menu
Coddy logo textTech

Merge Three-Way

Parte da seção Controle de Versão do Journey de Terminal da Coddy — lição 36 de 58.

Se ambos os branches avançaram de forma independente, o Git não pode simplesmente realizar um fast-forward. Em vez disso, ele realiza um three-way merge: ele analisa o ancestral comum e as pontas dos dois branches, e produz um novo commit que os combina.

Este novo commit é o merge commit. Ele tem dois pais, um de cada branch:

git switch main
git merge feature -m "Merge feature"

A flag -m fornece a mensagem do commit de merge diretamente, para que o Git não abra um editor.

Na maioria das vezes, o Git consegue combinar as alterações de ambos os branches automaticamente, desde que elas toquem em partes diferentes dos arquivos. Conflitos só acontecem quando ambos os branches alteram as mesmas linhas, que é o tópico da próxima lição.

challenge icon

Desafio

Médio

Você começa em uma pasta nova com top.txt (conteúdo: a) e bottom.txt (conteúdo: b).

Inicialize o repositório, faça um primeiro commit e então:

  1. Crie um branch chamado feature e adicione a linha added ao top.txt; faça o commit.
  2. Mude para o main e adicione a linha added ao bottom.txt; faça o commit.
  3. Mescle (merge) o feature no main com a mensagem Merge feature.

Imprima a contagem de commits alcançáveis a partir do HEAD usando git rev-list --count HEAD. A contagem esperada é 4 (inicial + feature + main + merge).

Folha de consulta

Quando ambos os branches divergiram, o Git realiza um three-way merge, criando um novo merge commit com dois pais:

git switch main
git merge feature -m "Merge feature"

A flag -m define a mensagem do merge commit sem abrir um editor. O Git realiza o merge automaticamente, desde que ambos os branches tenham alterado linhas diferentes.

Experimente você mesmo

Terminal
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Controle de Versão