Skip to content
Latchkey

O Que É um Rebase no Git?

Um rebase move uma série de commits para uma nova base, reaplicando-os um por um para produzir um histórico linear e mais limpo.

O rebase é uma alternativa ao merge para integrar mudanças. Em vez de amarrar dois históricos com um merge commit, um rebase reescreve seus commits como se tivessem sido feitos sobre o branch de destino mais recente. O resultado é um histórico em linha reta que muitas equipes acham mais fácil de ler.

O que o rebase faz

O Git pega os commits exclusivos do seu branch, os separa, move seu branch para o tip do destino e reaplica seus commits um de cada vez. Como ele reescreve os hashes dos commits, o histórico parece que seu trabalho sempre veio depois da main mais recente.

Fazendo rebase sobre a main

Um workflow comum atualiza um branch de feature com a main mais nova antes de abrir ou finalizar um pull request.

Rebasing a feature branch
git switch feature/api
git fetch origin
git rebase origin/main

Rebase versus merge

Um merge preserva a verdadeira forma do histórico, incluindo quando os branches divergiram, enquanto um rebase produz uma história linear limpa ao custo de reescrever commits. Ambos são válidos; a escolha é em grande parte uma questão de preferência da equipe e do quanto você valoriza um registro exato versus um log arrumado.

Rebase e CI/CD

Fazer rebase de um branch antes do merge significa que a CI testa seu código contra a main mais recente, reduzindo surpresas onde um branch passou isoladamente mas quebrou uma vez combinado. Como o rebase reescreve os hashes dos commits, ele força um novo push e uma nova execução de pipeline, então os checks refletem a base atualizada.

A regra de ouro

  • Faça rebase livremente do seu próprio trabalho ainda não enviado para arrumar o histórico.
  • Evite fazer rebase de branches compartilhados que outros já puxaram.
  • Faça force-push de branches reescritos apenas quando você for o dono deles.
  • Rode a CI novamente após um rebase, já que os commits e a base mudaram.

Principais conclusões

  • Um rebase reaplica seus commits sobre uma nova base para um histórico linear.
  • Ele reescreve os hashes dos commits, então evite fazer rebase de branches compartilhados.
  • Fazer rebase antes do merge testa seu código contra a main mais recente.

Guias relacionados