Git Rebase
Última atualização
git rebase move os commits da sua branch para que sejam reaplicados sobre outra branch, produzindo um histórico reto e linear em vez de um commit de merge. O rebase interativo (-i) vai além, permitindo combinar, reordenar, editar ou descartar commits. Como o rebasing reescreve os commits, faça isso apenas em trabalho que você ainda não compartilhou.
Experimente isso no terminal playground: um shell real no seu navegador, sem nada para instalar.
Sintaxe
| Command | What it does |
|---|---|
git rebase main | Reaplica seus commits sobre main |
git rebase -i HEAD~3 | Edita interativamente os últimos 3 commits |
git rebase --onto main old new | Move um intervalo de commits para main |
git rebase --continue | Retoma após resolver conflitos |
git rebase --abort | Cancela o rebase e restaura a branch |
git pull --rebase | Faz pull e rebase em vez de merge |
Palavras-chave do rebase interativo
No editor que o -i abre, altere pick para uma destas.
| Keyword | What it does |
|---|---|
pick | Mantém o commit |
reword | Mantém o commit e edita sua mensagem |
squash | Funde no commit anterior e combina as mensagens |
fixup | Funde, mas descarta esta mensagem |
drop | Remove o commit por completo |
Perguntas frequentes sobre git rebase
O que o git rebase faz?
Ele pega os commits da sua branch atual e os reaplica um a um sobre outra branch, como se você tivesse começado seu trabalho a partir do commit mais recente daquela branch. O resultado é um histórico linear sem commit de merge. Os commits são reescritos (recebem novos hashes) no processo.
O que é o rebase interativo?
git rebase -i <base> abre um editor que lista os commits desde <base>, onde você pode reordená-los, fazer squash de vários em um, fazer reword das mensagens, fazer edit de um commit ou drop para descartá-lo. É a principal ferramenta para limpar uma série bagunçada de commits antes de compartilhá-los.Qual é a regra de ouro do rebasing?
Nunca faça rebase de commits nos quais outros já basearam seu trabalho, normalmente qualquer coisa enviada para uma branch compartilhada. Como o rebase reescreve os commits, fazer isso obriga todos os outros a reconciliar um histórico divergente. Faça rebase à vontade em commits locais e não enviados; use merge ou revert para os públicos.
Como corrijo ou cancelo um rebase com conflitos?
Quando um rebase para em um conflito, resolva os arquivos, dê
git add neles e então execute git rebase --continue. Use git rebase --skip para descartar o commit atual, ou git rebase --abort para cancelar por completo e devolver a branch ao estado anterior ao início do rebase.Posso praticar isso online?
Sim. Abra o terminal playground para executar
git rebase em um shell real no seu navegador, sem nada para instalar. O curso interativo e gratuito de Git da Coddy também cobre o rebasing passo a passo.