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
| Command | What it does |
|---|---|
git merge feature | Mescla feature na branch atual |
git merge --no-ff feature | Sempre cria um merge commit |
git merge --ff-only feature | Só mescla se puder fazer fast-forward |
git merge --squash feature | Combina os commits da branch em um só |
git merge --abort | Cancela um merge com conflitos |
Fast-forward vs merge commit
| Scenario | Fast-forward | Merge commit (--no-ff) |
|---|---|---|
| Cria um novo commit | Não | Sim |
| Mantém um registro da branch | Não | Sim |
| Acontece quando | A branch atual não divergiu | Ambas as branches têm novos commits |
Resolvendo um conflito de merge
Quando ambas as branches alteraram as mesmas linhas, o Git pausa.
| Step | Command | Result |
|---|---|---|
| 1 | Edite os arquivos em conflito | Escolha as linhas corretas, remova os marcadores |
| 2 | git add <file> | Marca o conflito como resolvido |
| 3 | git commit | Conclui 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.