Menu
Coddy logo textTech

Git Merge

Última atualização

git merge traz os commits de outra branch para a atual. Quando a branch atual não divergiu, o Git faz um fast-forward - apenas movendo o ponteiro para frente. Quando ambas as branches têm novos commits, o Git cria um merge commit que une os dois históricos. Ao contrário do rebase, o merge preserva o histórico exato de ambas as branches.

Experimente isto no terminal playground - um shell real no seu navegador, sem nada para instalar.

Sintaxe

CommandWhat it does
git merge featureMescla feature na branch atual
git merge --no-ff featureSempre cria um merge commit
git merge --ff-only featureSó mescla se puder fazer fast-forward
git merge --squash featureCombina os commits da branch em um só
git merge --abortCancela um merge com conflitos

Fast-forward vs merge commit

ScenarioFast-forwardMerge commit (--no-ff)
Cria um novo commitNãoSim
Mantém um registro da branchNãoSim
Acontece quandoA branch atual não divergiuAmbas as branches têm novos commits

Resolvendo um conflito de merge

Quando ambas as branches alteraram as mesmas linhas, o Git pausa.

StepCommandResult
1Edite os arquivos em conflitoEscolha as linhas corretas, remova os marcadores
2git add <file>Marca o conflito como resolvido
3git commitConclui o merge

Perguntas frequentes sobre git merge

Como mesclo uma branch em outra no Git?
Mude para a branch na qual você quer mesclar (por exemplo, git switch main) e então execute git merge feature. O Git combina os commits de feature em main, seja por fast-forward ou criando um merge commit se ambas as branches tiverem divergido.
Qual é a diferença entre um fast-forward e um merge commit?
Um fast-forward acontece quando sua branch atual não se moveu desde que a outra branch se separou - o Git apenas desliza o ponteiro para frente, sem um novo commit. Um merge commit é criado quando ambas as branches têm novos commits, unindo seus históricos. Use --no-ff para sempre criar um merge commit, ou --ff-only para exigir um fast-forward.
Como resolvo um conflito de merge?
Quando um merge entra em conflito, o Git marca as seções conflitantes nos arquivos afetados com os marcadores <<<<<<<, ======= e >>>>>>>. Edite cada arquivo para manter o conteúdo correto e remover os marcadores, então faça git add nos arquivos resolvidos e git commit para finalizar o merge.
Como desfaço ou aborto um merge?
Se o merge ainda estiver em andamento (com conflitos não resolvidos), execute git merge --abort para cancelá-lo e restaurar o estado anterior ao merge. Se o merge já foi concluído localmente, git reset --hard ORIG_HEAD retorna a branch à posição anterior ao merge (ao contrário de HEAD~1, ele também funciona após um fast-forward - mas descarta o trabalho não commitado). Se o merge já foi enviado, use git revert -m 1 <merge-hash>.
Posso praticar isto online?
Sim. Abra o terminal playground para executar git merge em um shell real no seu navegador - sem nada para instalar. O curso interativo e gratuito de Git da Coddy também cobre merge e resolução de conflitos passo a passo.
Coddy programming languages illustration

Aprenda Git com a Coddy

COMEÇAR