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