Objetivo: Aprender a usar o Git Rebase para manter um histórico linear e limpo, entendendo quando é apropriado usá-lo e os cuidados necessários.
O git rebase é uma operação que "reaplica" commits de uma branch sobre outra. Em vez de criar um commit de merge (como faz o git merge), o rebase reorganiza o histórico para que pareça que você sempre trabalhou na branch de destino.
⚠️ CUIDADO: Rebase reescreve o histórico. Nunca faça rebase em commits que já foram enviados para repositórios públicos ou branches compartilhadas com outras pessoas.
| Use Rebase quando: | Use Merge quando: |
|---|---|
| Quer manter um histórico linear e limpo | Quer preservar todo o histórico exatamente como aconteceu |
| Está trabalhando em uma branch local não compartilhada | Está mesclando branches públicas ou compartilhadas |
| Quer incorporar mudanças da branch principal à sua branch de feature | Quer finalizar uma feature branch na branch principal |
# Cenário: Você está trabalhando na branch feature/login e
# deseja incorporar as atualizações recentes da branch main
# Primeiro, certifique-se de estar na branch que deseja rebasear
git checkout feature/login
# Execute o rebase
git rebase main
# Se houver conflitos, o Git pausará o rebase para você resolvê-los
# Depois de resolver cada conflito:
git add arquivo-resolvido
git rebase --continue
# Para cancelar um rebase em andamento
git rebase --abort
O rebase interativo é uma ferramenta poderosa que permite reorganizar, combinar, renomear ou até remover commits antes de aplicá-los.
# Rebase interativo dos últimos 3 commits
git rebase -i HEAD~3
Isso abrirá um editor de texto com opções para cada commit:
pick - manter o commit como estáreword - manter o commit, mas alterar a mensagemedit - pausar para alterar o commit (conteúdo e/ou mensagem)squash - combinar com o commit anterior (mantendo as mensagens)fixup - combinar com o commit anterior (descartando a mensagem)drop - remover o commit# Antes do rebase, sua branch pode ter commits como:
a123456 fix: corrige erro de digitação
b789012 fix: ajusta estilo do botão
c345678 feat: implementa login
# Após executar git rebase -i HEAD~3, você pode mudar para:
pick c345678 feat: implementa login
squash b789012 fix: ajusta estilo do botão
squash a123456 fix: corrige erro de digitação
# O resultado será um único commit combinado
Uma boa prática para manter seu histórico local limpo quando puxa atualizações do remoto:
# Em vez de git pull padrão
git pull --rebase origin main
# Configurar como padrão para uma branch
git config branch.main.rebase true
Mantenha sua feature branch sempre atualizada com a principal:
# Mantenha sua branch main atualizada
git checkout main
git pull
# Volte para sua feature branch e rebase
git checkout feature/login
git rebase main
# Force-push se necessário (com cuidado!)
git push --force-with-lease
<<<<<<< e >>>>>>>) e resolva os conflitos.git add).git rebase --continue).Objetivo: Usar rebase interativo para limpar uma série de commits
feature/rebase-exercicio← Voltar para página principal