No momento em que o git está entrando na minha cabeça, não consigo encontrar a melhor solução para o seguinte.
Existem dois ramos, um chamado mestre e outro chamado suporte móvel . Desejo manter o suporte para dispositivos móveis como um ramo contínuo que será mesclado / sincronizado com o ramo mestre sempre que o suporte para dispositivos móveis estiver estável. Isso mesclaria as alterações do suporte móvel para o mestre, mas também traria todas as alterações do suporte mestre para o móvel, para que a ramificação possa continuar sendo trabalhada e os recursos aprimorados ou alterados. Isso precisa funcionar com um repositório central e vários desenvolvedores.
Por favor, um exemplo de fluxos de trabalho semelhantes que outras pessoas usam ou apenas me diga se essa ideia é estúpida e devo considerar outras opções. No momento, o fluxo de trabalho parece bom, mas simplesmente não sei como fazer o git funcionar dessa maneira.
Obrigado, toda ajuda muito apreciada.
Atualização 1: Para mesclar o mestre no suporte de dispositivos mobilizados e o suporte ao dispositivo mobilizado no mestre, eu recebo confirmações replicadas nos dois ramos. Ou o git é inteligente o suficiente para descobrir que eu puxei as alterações mais recentes da ramificação A para a ramificação B e adicionei a consolidação de mesclagem C na ramificação B. E eu extraí as alterações mais recentes da ramificação B para a ramificação A e adicionei a consolidação de mesclagem D para ramificação UMA?
Eu ia postar uma imagem, mas não tenho reputação suficiente, então acho que a ilustração a seguir terá que fazer. Duas ramificações em execução contínua com mesclagens nas duas direções frequentemente. A principal coisa sobre a qual não tenho certeza é como o git executará os commits e preencherá um ramo com os commits do outro ramo nas mesclagens ou permanecerá limpo. Eu já usei rebase antes, mas parece encerrar o branch e colocar todos os commits no master, ou fiz errado. Obrigado pela ajuda até agora.
master
A--B--C-----H--I--J--M--N
\ / \
mobile \ / \
D--E--F--G--------K--L
Respostas:
sim apenas faça
para manter o suporte a dispositivos móveis sincronizado com o mestre
quando estiver pronto para colocar o suporte a dispositivos móveis no mestre, primeiro mescle no mestre como acima, e então ...
e é isso.
a suposição aqui é que mobilexxx é um ramo de tópico com trabalho que ainda não está pronto para entrar em seu ramo principal. Portanto, somente entre no master quando o suporte a dispositivos móveis estiver em um bom lugar
fonte
Sempre que desejar obter as alterações do mestre em sua ramificação de trabalho, faça a
git rebase <remote>/master
. Se houver algum conflito. resolvê-los.Quando a sua ramificação de trabalho estiver pronta, refaça novamente a redefinição e faça
git push <remote> HEAD:master
. Isso atualizará a ramificação principal no controle remoto (repositório central).fonte
git branch --contains <commit>
.A abordagem do concept47 é a maneira certa de fazê-lo, mas eu aconselho a mesclar com a opção --no-ff para manter seu histórico de consolidação claro.
fonte
Sim, eu concordo com a sua abordagem. Para mesclar o suporte a dispositivos móveis no mestre, você pode usar
Da mesma forma, você também pode mesclar o mestre no suporte a dispositivos móveis.
Q. Se a mesclagem cruzada for um problema ou não.
R. Bem, isso depende das confirmações feitas na filial móvel * e na filial principal desde a última vez em que foram sincronizadas. Veja este exemplo: Após a última sincronização, as confirmações a seguir ocorrem nesses ramos
Agora, suponha que o commit B fez algumas alterações no arquivo a.txt e o commit D também fez algumas alterações no a.txt. Vamos dar uma olhada no impacto de cada operação de fusão agora,
Agora, existem dois tipos de fusão possíveis
O Git primeiro tentará fazer a fusão do FF e se encontrar algum conflito não resolvível pelo git. Ele falha na mesclagem e solicita a mesclagem. Nesse caso, ocorrerá uma nova confirmação responsável pela resolução de conflitos em a.txt.
Portanto, o ponto principal é que a mesclagem cruzada não é um problema e, no final das contas, você precisa fazer isso, e é isso que significa sincronização. Certifique-se de sujar as mãos na fusão de galhos antes de fazer qualquer coisa na produção.
fonte
A resposta aceita via git merge fará o trabalho, mas deixa um histórico confuso de confirmação, a maneira correta deve ser 'rebase' através das seguintes etapas (supondo que você queira manter o seu ramo de recursos em sycn com desenvolvimento antes de fazer o push final antes do PR )
1
git fetch
da ramificação de recursos (verifique se a ramificação de recursos em que você está trabalhando está atualizada até a data)2
git rebase origin/develop
3 se surgir algum conflito, resolva-os um por um
4 usar
git rebase --continue
quando todos os conflitos forem resolvidos5
git push --force
fonte
Você está pensando na direção certa. Mesclar mestre com dispositivos móveis de suporte continuamente e mesclar dispositivos móveis com mestre quando o suporte móvel é estável. Cada desenvolvedor terá sua própria ramificação e poderá mesclar de e para o suporte mestre ou de dispositivos móveis, dependendo de sua função.
fonte