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.
Desafio
MédioVocê 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:
- Crie um branch chamado
featuree adicione a linhaaddedaotop.txt; faça o commit. - Mude para o
maine adicione a linhaaddedaobottom.txt; faça o commit. - Mescle (merge) o
featurenomaincom a mensagemMerge 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
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
4Inspecionando Alterações
Git DiffDiff das Alterações no StageGit ShowRecapitulação - Trabalho de Detetive2Primeiros Passos
Inicializar um RepositórioA Pasta .gitConfigurar sua IdentidadeGit StatusRecapitulação - Primeiro Repositório5Ignorando Arquivos
Por que ignorar arquivosPadrões do .gitignoreVerificar regras de ignoreRecapitulação - Repositório limpo3Rastreando Alterações
A Área de PreparaçãoGit AddGit CommitModificando um Arquivo RastreadoGit LogRecapitulação - Primeiros Commits6Projeto Site de Receitas
Visão Geral do ProjetoInicializar e Ignorar