[GIT] Rebasing - Aula 6
Rebasing
Diferentemente do Merge, o Rebase é uma operação que permite mudar a base de uma Branch, essencialmente "reaplicando" as mudanças de uma Branch em outra, sem a criação de um Merge Commit. Exemplo:
B---C topic
/
D---E---A main
Aplicando o Rebase, o exemplo ficaria:
B---C topic
/
D---E---A main
Perceba que o Rebase basicamente troca o Merge Base de "E" para o final (Tip) de main "A", o que automaticamente gera uma situação de Fast Foward Merge.
Obs: O identificador único (SHA-1) dos Commits "B" e "C" serão alterados, tendo em vista terem trocado de parentes, "B" agora é parente de "A" e não de "E", por isso seu identificador muda, o identificar de "C" muda em decorrência da alteração de "B".
Como fazer um Rebase
Seguimos com o mesmo exemplo:
B---C topic
/
D---E---A main
Importante
No Merge deveríamos ir para main (Switch), e depois realizar o Git Merge na main para fundir a Topic. Entretanto, no Rebase realizaremos o inverso, precisamos estar na topic para executar o Rebase na main.
Tendo isso em mente, iniciamos trocando para topic.
git switch topic
Feito isso, executamos o Rebase:
git rebase main
o que resultará em:
B---C topic
/
D---E---A main
Após o Rebase, é comum fazer um Fast Forward Merge para atualizar a main com os novos Commits.
Obs: Nunca faça um Rebase de Branch Pública (tipo a main) para outra Branch qualquer.