Rebase
Recomendação: não fazer REBASE na branch principal, somente nas branches de features
O git merge e o git rebase são comandos usados para integrar mudanças de diferentes branches no Git, mas funcionam de maneiras distintas e são usados em diferentes cenários. Vamos explorar cada um:
Git Merge
O git merge integra as mudanças de uma branch em outra, criando um commit de merge que preserva o histórico de ambas as branches.
Como funciona:
Suponha que você tem duas branches:
mainefeature.Para integrar as mudanças da branch
featurena branchmain, você faria:git checkout main git merge feature
Resultado:
O histórico das duas branches é preservado.
Um novo commit de merge é criado, unindo as mudanças das duas branches.
Exemplo de histórico:
* commit D (merge)
|\
| * commit C (feature)
|/
* commit B (main)
* commit A (main)Git Rebase
O git rebase aplica os commits de uma branch sobre outra, reescrevendo o histórico de commits.
Como funciona:
Suponha que você tem duas branches:
mainefeature.Para rebasiar a branch
featuresobre a branchmain, você faria:
Resultado:
O histórico da branch
featureé reescrito, aplicando seus commits no topo da branchmain.Não há um commit de merge; em vez disso, os commits da branch
featuresão "reaplicados" sobre amain.
Exemplo de histórico:
Principais Diferenças
Histórico:
git mergepreserva o histórico das duas branches, mostrando claramente de onde cada mudança veio.git rebasereescreve o histórico da branch que está sendo rebased, criando um histórico linear.
Commits de Merge:
git mergecria um commit de merge.git rebasenão cria commits de merge.
Uso Típico:
git mergeé útil quando você deseja preservar o histórico completo e ver como as branches se integraram.git rebaseé útil para criar um histórico linear, mais limpo, sem commits de merge.
Escolha entre Merge e Rebase
Use
git mergequando você deseja manter um histórico de commits que reflete exatamente como o desenvolvimento ocorreu.Use
git rebasequando você quer um histórico linear e limpo, especialmente antes de integrar suas mudanças em uma branch compartilhada comomain.
Exemplo de Conflitos
Ambos os métodos podem resultar em conflitos que precisam ser resolvidos manualmente. A principal diferença é como esses conflitos aparecem no histórico.
Ao entender as diferenças e implicações de git merge e git rebase, você pode escolher a melhor abordagem para o seu fluxo de trabalho de desenvolvimento.
Laboratório
Situação atual da branch main:
Criação da branch feature/arquivo-rebase:
Criação e commit do arquivo rebase.txt:
Retornar para a branch main para simular a existência de mais algum commit nela:
Verificação da situação da branch feature/arquivo-rebase:
Alteração do arquivo rebase.txt na branch feature/arquivo-rebase:
Rebase
Last updated