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-y
e o git rebase feature-x
que 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-y
git 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 --continue
git rebase --skip