Rebase simples de commits no Git
O sistema Git fornece duas maneiras de incorporar alterações ao trabalhar com branches: merge (fusão) e rebase (rebase).
A vantagem do rebase é que o histórico de commits de ambas as branches, ao contrário do merge, será mais linear e mais fácil de entender pelos membros da equipe que trabalha em um mesmo projeto.
No Git, o merge, executado com o comando
merge, ocorre como uma fusão tripla
(three-way merge) das alterações mais recentes
das duas branches sendo mescladas e do snapshot
mais recente da branch pai, comum a essas duas branches.
Assim, apenas os snapshots finais dos commits
das branches são fundidos, e não todo o seu
histórico anterior.
O rebase consiste em aplicar as alterações
de uma branch (atual) sobre outra branch (que está sendo
mesclada com a atual). Vamos criar uma branch test, na qual
vamos criar um novo arquivo file.txt,
adicioná-lo ao índice e fazer um commit:
git branch test
git switch test
git add file.txt
git commit -m "commit from branch test"
Agora vamos mudar para a branch test
e fazer o rebase dela em relação à branch
principal master:
git checkout test
git rebase master
O próprio processo de rebase ocorre da seguinte
forma: primeiro, o Git tira um snapshot da branch pai
master, que é salvo em um arquivo temporário. Em seguida,
a branch atual test insere suas alterações
após o commit mais recente da branch master.
Agora, o histórico de commits da branch principal
ficará assim:
Após o rebase, o histórico de commits
da branch test também ficará
similar ao da branch master.
Depois disso, você pode mudar para a branch master
e executar um merge de avanço rápido (fast-forward),
ou seja, a master se tornará a principal novamente e incluirá
todas as alterações da branch test:
git merge test
Crie duas branches test1 e test2,
em cada uma delas faça três commits em
arquivos diferentes e, em seguida, execute a
fusão delas usando rebase simples.