Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Realizando uma Operação de Rebase | Fluxos de Trabalho Mais Avançados
Fundamentos do GitHub

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
Mudando para a branch main e buscando alterações

Agora, vamos analisar a árvore de commits:

git log --graph --oneline --all
Árvore de commits antes do rebase

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
Rebase de alterações

Merge Fast-forward

Como o rebase foi bem-sucedido, vamos analisar novamente nossa árvore de commits:

git log --graph --oneline
Árvore de commits após o rebase

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
Mesclando branches

Vamos verificar se ambos os branches apontam para o mesmo commit analisando o commit mais recente:

git log -n 1
Último commit

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
Excluindo branches

Por fim, todas as alterações realizadas podem ser enviadas de volta para o repositório remoto:

git push
Enviando exclusão

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
Listando todos os branches

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.

question mark

Após fazer rebase de feature/payment em main, por que o comando git merge feature/payment realiza um merge fast-forward?

Selecione a resposta correta

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 3. Capítulo 5

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Seção 3. Capítulo 5
some-alt