Realizando uma Operação de Rebase
Deslize para mostrar o menu
Rebase de alterações na branch main
Antes de realizar o rebase das alterações, é necessário primeiro mudar para a branch main e buscar as alterações mais recentes:
git checkout main
git pull
Agora, vamos analisar a árvore de commits:
git log --graph --oneline --all
Atualmente, tanto o branch main quanto o feature/payment possuem commits após o ancestral comum mais recente. Isso indica que um fast-forward merge não pode ser realizado.
Se fôssemos mesclar esses branches, ocorreria um three-way merge. No entanto, queremos manter o histórico linear, então vamos realizar um rebase do branch feature/payment sobre o branch main. Isso pode ser feito alternando para o branch feature/payment e executando o comando git rebase:
git checkout feature/payment
git rebase main
Merge Fast-forward
Como o rebase foi bem-sucedido, vamos analisar novamente nossa árvore de commits:
git log --graph --oneline
Como esperado, o histórico de commits agora está linear com o commit mais recente na branch feature/payment. Agora, é possível realizar um merge fast-forward simples na branch main:
git checkout main
git merge feature/payment
Vamos verificar se ambos os branches apontam para o mesmo commit analisando o commit mais recente:
git log -n 1
Removendo a Branch de Funcionalidade
A branch main agora contém o commit mais recente com a implementação do sistema de pagamento, portanto podemos remover com segurança tanto a branch local quanto a remota feature/payment. O comando a seguir remove a branch remota:
git push --delete origin feature/payment
Agora, podemos remover a branch local:
git branch -d feature/payment
Por fim, todas as alterações realizadas podem ser enviadas de volta para o repositório remoto:
git push
Para verificar se a branch feature foi excluída tanto localmente quanto remotamente, é possível executar o seguinte comando, que lista todas as branches locais e remotas (-a significa todas):
git branch -a
Como você pode ver, o branch feature/payment foi excluído com sucesso, e agora existem apenas dois branches: main e john/test com seus correspondentes remotos.
No geral, o rebase funciona bem para alterações locais que ainda não foram compartilhadas, mas pode causar problemas significativos para alterações que já foram publicadas em um repositório remoto e possivelmente baixadas por outros colaboradores. Fazer rebase em commits que outros estão utilizando pode criar confusão e conflitos devido à reescrita do histórico de commits.
Como regra geral, evite fazer rebase em alterações que já foram enviadas para repositórios remotos para prevenir esses problemas.
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo