Git Rebase vs Merge
Última atualização
Tanto git merge quanto git rebase combinam o trabalho de um branch em outro. O git merge une os dois históricos com um commit de merge, preservando exatamente o que aconteceu. O git rebase reaplica seus commits um a um sobre o outro branch, produzindo um histórico limpo e linear, mas reescrevendo seus commits no processo.
A regra de ouro: nunca faça rebase de commits que outras pessoas já baixaram. Experimente os dois no terminal playground: um shell real no seu navegador.
Lado a lado
| Behavior | git merge | git rebase |
|---|---|---|
| Formato do histórico | Ramificado, com um commit de merge | Linear |
| Reescreve os commits | Não | Sim |
| Seguro em branches compartilhados | Sim | Não |
| Preserva o histórico exato | Sim | Não |
| Fácil de rastrear quando as coisas foram mescladas | Sim | Mais difícil |
Sintaxe
| Command | What it does |
|---|---|
git merge feature | Mescla feature no branch atual |
git merge --no-ff feature | Sempre cria um commit de merge |
git rebase main | Reaplica os commits do branch atual sobre main |
git rebase -i HEAD~3 | Edita interativamente os últimos 3 commits |
git rebase --abort | Cancela um rebase em andamento |
Perguntas frequentes sobre git rebase vs merge
Qual é a diferença entre git rebase e git merge?
O
git merge combina dois branches criando um novo commit de merge que junta seus históricos, mantendo o registro exato do que aconteceu. Já o git rebase move seus commits para que sejam reaplicados sobre outro branch, produzindo um histórico em linha reta, mas reescrevendo esses commits com novos hashes. O merge preserva o histórico; o rebase o reescreve para deixá-lo limpo.Quando devo usar merge e quando devo usar rebase?
Use merge para integrar um branch finalizado (especialmente um compartilhado): é seguro e não destrutivo. Use rebase para organizar seus próprios commits locais antes de compartilhá-los, ou para atualizar um branch de funcionalidade sobre o
main mais recente e ter um histórico limpo. Muitas equipes fazem rebase localmente e depois merge no main.Qual é a regra de ouro do rebase?
Nunca faça rebase de commits sobre os quais outras pessoas já basearam seu trabalho, normalmente qualquer coisa que você tenha enviado para um branch compartilhado. Como o rebase reescreve os commits, fazer isso força todos os demais a reconciliar um histórico divergente. Faça rebase à vontade em commits locais não enviados; use merge (ou revert) para qualquer coisa que já seja pública.
O rebase ou o merge causa menos conflitos?
Nenhum dos dois evita conflitos, mas eles os apresentam de formas diferentes. Um merge resolve todos os conflitos de uma vez, no commit de merge. Um rebase pode pedir que você resolva os conflitos commit a commit, à medida que cada um é reaplicado. O trabalho total é semelhante; o rebase apenas o distribui.
Posso praticar isso online?
Sim. Abra o terminal playground para executar
git merge e git rebase em um shell real no seu navegador, sem instalar nada. O curso interativo e gratuito de Git da Coddy também cobre merge e rebase passo a passo.