Menu
Coddy logo textTech

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

Behaviorgit mergegit rebase
Formato do históricoRamificado, com um commit de mergeLinear
Reescreve os commitsNãoSim
Seguro em branches compartilhadosSimNão
Preserva o histórico exatoSimNão
Fácil de rastrear quando as coisas foram mescladasSimMais difícil

Sintaxe

CommandWhat it does
git merge featureMescla feature no branch atual
git merge --no-ff featureSempre cria um commit de merge
git rebase mainReaplica os commits do branch atual sobre main
git rebase -i HEAD~3Edita interativamente os últimos 3 commits
git rebase --abortCancela 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.
Coddy programming languages illustration

Aprenda Git com a Coddy

COMEÇAR