/ / Como faço para mudar o ramo git do qual me ramifiquei? - git, controle de versão, github, ramificação e mesclagem

Como faço para mudar o ramo git do qual me ramifiquei? - git, controle de versão, github, ramificação e mesclagem

Eu estava trabalhando em um ramo de recurso e fiz um git checkout -b feature/other-feature, fez algum trabalho, comprometeu-o e, em seguida, empurrou-o para o recurso de origem / outro recurso no github.

Quando criei um pedido de pull doramificação other-feature no github Eu percebi que ele mostrava uma carga de commits do branch - commits do recurso original que deveriam ser fundidos para serem desenvolvidos a partir do branch original.

Eu acho que o que fiz de errado foi omitir git checkout develop antes que eu fiz git checkout -b feature/other-feature e então o que eu acho que eu quero fazer para corrigir esta situação é rebase de outros recursos para desenvolver.

Mas dado que eu empurrei meu erro para a origem e outras pessoas têm clones deste repo, eu preciso rebase ou fazer outra coisa?

Respostas:

3 para resposta № 1

Sim, você precisa rebase sua cópia de feature/other-feature. No entanto, neste caso, um simples git rebase develop provavelmente não funcionará, porque você se ramificou de outro ramo de recursos, em vez de diretamente develop. Você precisa usar rebase --onto:

git rebase --onto develop feature/earlier-feature feature/other-feature

Aqui, feature/earlier-feature é o ramo de recursos que você tinha verificado quando você morre o original git checkout -b feature/other-feature.

Este rebase irá:

  1. Tome os commits em feature/other-feature que são não dentro feature/earlier-feature.
  2. Reaplicar esses commits para develop.

Você deve acabar com um ramo alterado feature/other-feature que agora é baseado em develop.


Notas

  • Por causa da recomposição, você terá que forçar o envio de sua ramificação para o repositório do GitHub. Isso não é um problema, contanto que você tenha o único clone do seu repositório. Se você usar o repositório com outras pessoas, as coisas serão mais difíceis (veja abaixo).
  • O rebase pode causar conflitos. Você terá que resolver isso manualmente.
  • Leitura adicional: Os conceitos por trás da rebasing e o significado de rebase --onto são bem explicados no livro "Pro Git". Veja o capítulo 3.6, Git Branching - Rebasing.

Se outros clonaram seu repositório

Você escreve

Mas dado que eu tenho empurrado o meu erro para a origem e outras pessoas têm clones deste repo, eu preciso rebase ou fazer outra coisa?

Você ainda pode rebase conforme descrito acima. No entanto, você não deve forçar o envio da ramificação rebased com o nome antigo. Em vez disso, crie uma cópia do ramo:

git checkout -b feature/other-feature-2 feature/other-feature

Isto irá criar um novo ramo feature/other-feature-2 essa é uma cópia exata feature/other-feature. Você pode então rebase o novo ramo, e empurrá-lo com o novo nome. Então diga a todos que feature/other-feature foi substituído por feature/other-feature-2e excluir feature/other-feature no GitHub. Ter que dizer a todos é o preço que você paga para rebasing :-).