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
course content

Conteúdo do Curso

Fundamentos do GitHub

Fundamentos do GitHub

1. Introdução ao GitHub
2. Interação Básica com Repositórios Remotos
3. Fluxos de Trabalho Mais Avançados

book
Realizando uma Operação de Rebase

Rebase de alterações na branch main

Antes de realizar o rebase das alterações, é necessário alternar para a branch main e puxar as alterações mais recentes:

Agora, vamos analisar a árvore de commits:

Atualmente, tanto a branch main quanto a feature/payment possuem commits após o ancestral comum mais recente. Isso indica que um fast-forward merge não pode ser realizado.

Se essas branches fossem mescladas, ocorreria um three-way merge. No entanto, para manter o histórico linear, será realizado o rebase da branch feature/payment sobre a branch main. Isso pode ser feito alternando para a branch feature/payment e executando o comando git rebase:

Mesclagem Fast-forward

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

Como esperado, o histórico de commits agora está linear com o commit mais recente na branch feature/payment. Agora, podemos realizar uma mesclagem fast-forward simples para a branch main:

Vamos verificar se ambas as branches apontam para o mesmo commit analisando o commit mais recente:

Remoção da Branch de Funcionalidade

A branch main agora contém o commit mais recente com o sistema de pagamento implementado, portanto, podemos remover com segurança tanto a branch local quanto a remota feature/payment. O comando a seguir remove a branch remota:

Agora, podemos remover a branch local:

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

Para verificar se o branch feature foi excluído tanto localmente quanto remotamente, é possível executar o seguinte comando, que lista todos os branches locais e remotos (-a significa todos):

Como pode ser observado, o branch feature/payment foi excluído com sucesso, restando agora apenas dois branches: main e john/test com seus respectivos remotos.

De modo 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 gerar 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 git merge feature/payment realiza um merge fast-forward?

Select the correct answer

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

course content

Conteúdo do Curso

Fundamentos do GitHub

Fundamentos do GitHub

1. Introdução ao GitHub
2. Interação Básica com Repositórios Remotos
3. Fluxos de Trabalho Mais Avançados

book
Realizando uma Operação de Rebase

Rebase de alterações na branch main

Antes de realizar o rebase das alterações, é necessário alternar para a branch main e puxar as alterações mais recentes:

Agora, vamos analisar a árvore de commits:

Atualmente, tanto a branch main quanto a feature/payment possuem commits após o ancestral comum mais recente. Isso indica que um fast-forward merge não pode ser realizado.

Se essas branches fossem mescladas, ocorreria um three-way merge. No entanto, para manter o histórico linear, será realizado o rebase da branch feature/payment sobre a branch main. Isso pode ser feito alternando para a branch feature/payment e executando o comando git rebase:

Mesclagem Fast-forward

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

Como esperado, o histórico de commits agora está linear com o commit mais recente na branch feature/payment. Agora, podemos realizar uma mesclagem fast-forward simples para a branch main:

Vamos verificar se ambas as branches apontam para o mesmo commit analisando o commit mais recente:

Remoção da Branch de Funcionalidade

A branch main agora contém o commit mais recente com o sistema de pagamento implementado, portanto, podemos remover com segurança tanto a branch local quanto a remota feature/payment. O comando a seguir remove a branch remota:

Agora, podemos remover a branch local:

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

Para verificar se o branch feature foi excluído tanto localmente quanto remotamente, é possível executar o seguinte comando, que lista todos os branches locais e remotos (-a significa todos):

Como pode ser observado, o branch feature/payment foi excluído com sucesso, restando agora apenas dois branches: main e john/test com seus respectivos remotos.

De modo 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 gerar 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 git merge feature/payment realiza um merge fast-forward?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

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