Estou desenvolvendo um novo recurso em uma nova ramificação e, ao lado, cometi algumas alterações em minha ramificação principal.
É possível mesclar a ramificação principal em minha nova ramificação para mantê-lo atualizado, para que não tenha muitos conflitos de mesclagem depois que o novo recurso for concluído?
git
version-control
merge
branch
mnml
fonte
fonte
Respostas:
Você pode
git merge master
ougit rebase master
, nesse caso, eu preferiria o git rebase .Porque
git rebase
faz com que as alterações na ramificação do recurso tenham sido feitas sobre as alterações na ramificação principal, o que simplifica o gráfico da versão.Rebase
Tomando o exemplo do manual git rebase ,
git rebase master
na ramificaçãofeature
:No entanto,
git rebase
é adequado apenas quando a ramificação não foi distribuída ou haverá confusão e trabalho extra a jusante, porque o antigo commit A, B, C agora é substituído pelos novos commit A ', B', C 'e F e G que não estavam lá antes.O resultado real depois
git rebase master
da ramificaçãofeature
é este:As confirmações A, B, C estão pendentes após a rebase, mas são alcançáveis
git reflog feature
.Mesclar
Se alguém puxou seu ramo ou você o empurrou para algum lugar, você deve se fundir a ele, para evitar confusão e trabalho extra do outro lado. Consulte Recuperando de rebase upstream .
Este é o resultado de
git merge master
no ramofeature
:Como alternativa, se você
git merge feature
no ramomaster
, ficaria assim:fonte
git rebase master
, e "rebase" as alterações na ramificação do recurso, para que sejam "baseadas" nas alterações na ramificação mestre. Se as alterações na ramificação principal entrarem em conflito com as mudanças na ramificação de recursos, o git solicitará que você as resolva e continue, ignore ou aborte. Se você não tiver certeza, pode fazer o check-out de uma ramificação de teste para experimentá-lagit checkout -b test-feature feature
(supondo que sua ramificação de recurso seja denominada "feature").git rebase
só deve ser usado se o ramo não tiver sido distribuído, o que eu assumi ser o caso, pois você disse que era um novo ramo, desculpe por isso. Consulte Recuperando-se da rebase upstream nos documentos aos quais vinculei. Você precisará usargit merge
. E você pode usargit reflog
para encontrar a cabeça de ramificação de recurso anterior, se quiser recuperá-la.