Ramificação de uma filial

Se o seu fluxo de trabalho consiste em ramificar o master, então uma solicitação pull / revisão de código. Então você pode entrar em uma situação em que seu próximo branch requer o branch não mesclado.

Neste ponto, você tentaria ramificar um branch. Que se pareceria com:

o-o-o master

-o-o-o-o-o feature-x

-o-o-o-o-o feature-y

No entanto, se você adicionar um commit ao feature-x, será parecido com:

o-o-o master

-o-o-o-o-o-o feature-x

-o-o-o-o-o feature-y

Isso significa que o feature-y não terá o novo commit. Portanto, você precisa git checkout feature-ye o git rebase feature-xque vai acabar como:

o-o-o master

-o-o-o-o-o-o feature-x

-o-o-o-o-o feature-y

No entanto, se feature-x mudasse completamente (histórico de rebase / reescrita), ficaria assim:

o-o-o master
|
|-x-x-x-x-x feature-x

-o-o-o-o-o

-o-o-o-o-o feature-y

Neste ponto, você precisaria realocar feature-y em feature-x e remover os commits duplicados (sim, você tem que lembrar quais commits são quais). Para fazer isso, você deve remover os commits que não deseja. Que vai acabar como:git checkout feature-y git rebase feature-x -i

o-o-o master

-x-x-x-x-x feature-x

-o-o-o-o-o feature-y

Quando o recurso-x é finalmente mesclado no mestre. Supondo que feature-y esteja atualizado com feature-x, seria o seguinte:

o-o-o------------o master
/
-x-x-x-x-x feature-x

-o-o-o-o-o feature-y

Neste ponto, nós simplesmente e que se pareceria com:git checkout feature-ygit rebase master

o-o-o-------------o master
/|
-x-x-x-x-x- | feature-x

-o-o-o-o-o feature-y

Nota

Se você esquecer de remover os commits duplicados ao fazer o rebase, você pode acabar com conflitos durante o rebase e depois de ter resolvido os conflitos se não estiver funcionando, isso significa que na verdade não há mudanças, então não aplicará o commit. Neste ponto, você simplesmente .git rebase --continuegit rebase --skip