O que é Git rebase e quando convém usá-lo em vez de merge?
Publicado em 2026-10-20 por frfrand
Rebase de Git explicado con ejemplos: historia lineal, cambios de identificador, diferencias con merge y cómo evitar reescribir ramas compartidas.

O Git rebase permite mover ou reproduzir uma série de commits sobre outro ponto de partida do histórico. Geralmente é usado para atualizar um branch de trabalho e manter uma sequência mais linear, mas há um aviso importante: pode alterar os identificadores dos commits.
Não torna seu código melhor por si só. É uma ferramenta para organizar o histórico do repositório.
O exemplo da receita
Imagine que você escreveu três passos para preparar um bolo a partir de uma receita antiga. Enquanto isso, alguém mudou a receita base. Você pode tentar aplicar seus três passos sobre a versão atualizada.
Isso se parece com rebase: o Git pega commits do seu branch e os reaplica a partir de outra base. O resultado pode ter o mesmo efeito funcional, mas o histórico gerado não é idêntico ao anterior.
Em que se difere do merge?
Um merge reúne históricos e, em uma combinação não trivial, normalmente cria um commit de integração que conserva a relação entre os branches.
Um rebase reaplica commits, geralmente resultando em um histórico visual mais linear. Pode ser conveniente para revisão, mas também faz com que certos commits sejam representados como novos objetos.
Nenhuma estratégia é universalmente superior. Alguns times valorizam conservar o histórico exato das integrações e outros preferem uma linha mais simples de ler.
Exemplo habitual
Você trabalha em um branch feature/reservas e quer incorporar as mudanças recentes de main:
git fetch origin
git switch feature/reservas
git rebase origin/main
Se não houver conflitos, o Git continua. Se aparecerem, você precisa resolvê-los e seguir o procedimento indicado, por exemplo git rebase --continue.
Antes de utilizar esses comandos, verifique se você está no branch correto e se o seu trabalho local está salvo.
Por que os hashes mudam?
Um commit referencia seus pais. Se você alterar esse ponto de partida, parte dos dados que o identificam muda. Embora o código pareça igual, não é mais o mesmo commit.
Por isso é perigoso fazer rebase de um branch público que outras pessoas já utilizam e depois forçar sua publicação sem coordenar. Você pode obrigá-las a reconciliar históricos divergentes ou causar confusão com commits duplicados.
O que é rebase interativo?
O Git permite reorganizar ou combinar commits locais por meio de um modo interativo. Por exemplo, se você fez cinco commits de «ajuste», poderia preparar um histórico mais legível antes de abrir um pull request.
Isso pode ser útil antes de compartilhar o trabalho. Mas não deve ser usado como desculpa para apagar evidências de decisões importantes ou reescrever mudanças de outras pessoas.
O rebase resolve conflitos automaticamente?
Não. Pode parar quando duas mudanças entram em conflito. A diferença é que, ao reproduzir vários commits, você pode ter que resolver problemas em diferentes etapas.
Ante uma situação que você não entende, git rebase --abort pode cancelar a operação em andamento e retornar ao estado anterior desse rebase. É preferível parar e revisar do que introduzir mudanças incertas.
Quando convém usá-lo?
Se você trabalha em um branch próprio, quer trazer as mudanças do branch principal e sua equipe tem uma política de histórico linear, pode ser uma boa opção.
Se o branch é compartilhado, a equipe valoriza o histórico real de integrações ou não se sente confortável com reescritas, um merge pode ser mais apropriado.
E no ArduMaker?
Um aplicativo que você implanta via Git no ArduMaker não precisa de rebase para funcionar. Sim, precisa de um repositório coerente, uma referência de versão clara e testes antes da implantação. Rebase é uma decisão do fluxo de desenvolvimento, não um requisito da infraestrutura.
A conclusão: rebase serve para reaplicar mudanças a partir de uma base diferente. Use-o quando compreender como afeta o histórico e evite reescrever branches que outras pessoas já baixaram sem coordenar.
Fontes: Git rebase oficial · Rebase em Pro Git.
