Rebase

Rebase

Estou desenvolvendo um novo recurso em um novo branch e, paralelamente, fiz algumas alterações em meu branch master.

É possível mesclar o branch master em meu novo branch para mantê-lo atualizado e não ter muitos conflitos de mesclagem quando o novo recurso for concluído?

Responder1

Você também podegit merge masterougit rebase master.

Se a filial não foi distribuída para outras pessoas, neste caso eu prefeririagit rebase.

Porque git rebasefaz com que seja como se as alterações na ramificação do recurso fossem feitas sobre as alterações na ramificação master, o que torna o gráfico de versão mais simples.

Rebase

Tomando o exemplo domanual de rebase do git, git rebase masterno ramo feature:

      A---B---C feature                             A'--B'--C' feature
     /                   --rebase-->               /
D---E---F---G master                  D---E---F---G master

No entanto, git rebasesó é adequado quando ninguém mais está trabalhando nisso, ou haverá confusão e trabalho extra para eles, porque os antigos commits A, B, C agora são substituídos pelos novos commits A', B', C', mais F e G que não existiam antes.

O resultado real após git rebase mastero branch featureé este:

      ( A---B---C ) feature@{1}
       /
      /       A'--B'--C' feature
     /       /
D---E---F---G master

Os commits A, B, C ficam pendentes após o rebase, mas podem ser acessados ​​por meio de git reflog featureas feature@{1}.

Mesclar

Se alguém puxou seu branch, ou você o empurrou para algum lugar, você deve fundi-lo, para evitar confusão e trabalho extra do outro lado. VerRecuperando-se do rebase upstream.

Este é o resultado de git merge masterin branch feature:

      A---B---C feature                    A---B---C---M feature
     /                   --merge-->       /       ,---’
D---E---F---G master                 D---E---F---G master

Alternativamente, se você git merge featureestiver em branch master, ficaria assim:

      A---B---C feature                    A---B---C feature
     /                   --merge-->       /         \
D---E---F---G master                 D---E---F---G---M master

informação relacionada