← Todos os textos

Técnicas para tornar o rebase menos dor de cabeça

Nesta página

Vejo desenvolvedores com frequência fazendo merge da main nas suas branches de feature e abrindo pull requests (PRs) que incluem commits de outras branches. Essa prática leva ao “git espaguete”, que tem várias consequências:

  • Complica o histórico de commits
  • Aumenta o risco de conflitos difíceis de os outros resolverem
  • Pode introduzir mudanças que não estão prontas para a main
  • Atrapalha o code review, porque mudanças alheias distraem do propósito central do PR

Soft reset antes do rebase

Use git reset para voltar ao ponto em que sua branch divergiu da branch principal. Isso mantém suas mudanças intactas no diretório de trabalho, prontas para serem commitadas de um jeito mais limpo e organizado.

git reflog  # Identify the divergence point
git reset commit_sha  # Soft reset to this point

Vantagens:

  • Mantém suas mudanças no diretório de trabalho
  • Simplifica o rebase ao reduzir o número de commits para administrar
  • Resulta num histórico de commits mais limpo e com mais sentido
  • Menos pressão para decidir a mensagem do commit, porque você junta tudo num só com squash

Fetch em vez de pull

Rode git fetch para atualizar seu repositório com as últimas mudanças do remoto sem fazer merge automático delas na sua branch local. Isso dá a chance de revisar as mudanças antes de decidir como integrá-las.

git fetch origin
git rebase origin/main  # Rebase your branch on the updated main branch

Vantagens:

  • Deixa você decidir quando incorporar as mudanças novas do seu time
  • Melhora o entendimento dos commits novos antes de fazer merge ou rebase
  • Ajuda a manter um histórico de commits linear e limpo