Noções Básicas de Rebase
Deslize para mostrar o menu
Realizando um Commit no Branch main
Início com a realização de um commit diretamente no branch remoto main ao editar o arquivo README.md no repositório remoto. Isso fará com que o branch main e o branch feature/payment tenham um histórico de commits divergente.
Aqui está a linha adicionada ao arquivo:
New feature will soon be integrated.
Aqui está a respectiva mensagem de commit:
Add information about new feature in README.md
Compreendendo o Rebasing
Como mencionado no capítulo anterior, após a revisão e testes da branch feature, ela pode e deve ser mesclada de volta à branch main. Até agora, utilizamos apenas o comando git merge para esse propósito. No entanto, outra abordagem é utilizar o comando git rebase.
Rebasing é o processo de mover ou combinar uma sequência de commits para um novo commit base. Isso é feito ao reproduzir as alterações de uma branch em outra, resultando em um histórico linear de commits.
Quando criamos uma branch, o Git acompanha o último commit em ambas as branches. Se apenas uma branch tiver novas alterações, o Git pode avançar rapidamente e aplicar as mudanças. No entanto, se ambas as branches tiverem novas alterações, o Git cria um novo commit de merge, resultando em um merge de três vias.
Veja como seria um merge de três vias em nosso caso, onde C4 era o último commit na branch feature/payment antes da mesclagem:
No entanto, mesclagens de três vias podem dificultar a depuração devido ao histórico dividido e não linear. Ao realizar o rebase, alteramos a base dos nossos commits e os reaplicamos sobre a nova base, permitindo que o Git execute uma mesclagem fast-forward e mantenha um histórico linear.
Aqui está uma animação para ilustrar como o rebase pode ser realizado neste caso (os identificadores dos commits não correspondem aos reais aqui):
Ao fazer rebase em um branch, você está essencialmente reescrevendo seu histórico. Isso significa que os commits antigos são substituídos por novos, que possuem identificadores diferentes (hash sums) porque são baseados em snapshots diferentes do código. Como mostrado na animação acima, o identificador do commit no branch feature/payment mudou após o rebase.
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo