Eu tenho dois galhos email
estaging
. staging
é a mais recente e não preciso mais das alterações antigas no email
ramo, mas não quero excluí-las.
Então, eu só quero despejar todo o conteúdo staging
em email
modo que ambos apontam para o mesmo cometeu. Isso é possível?
Respostas:
Você pode usar a estratégia de mesclagem 'nossa':
fonte
;
no final de cada comando? Eu fiz sem o;
e parece estar funcionando. Além disso, esta resposta está incompleta, o terceiro passo é fazer o checkout do ramo antigo (email) e depois mesclar com o teste novamente.git rebase -s theirs <oldbranc> <newbranch>
também funciona (não importa qual ramo você seja). Observe que em rebase 'deles' é realmente o newbranch porque 'nosso' é a cabeça na qual estamos aplicando os commits.Se você deseja que os dois ramos 'email' e 'teste' sejam iguais, é possível marcar o ramo 'email' e redefinir o ramo 'email' para o 'teste':
Você também pode refazer a ramificação 'teste' na ramificação 'email'. Mas o resultado conterá a modificação dos dois ramos.
fonte
git checkout
,git check
não existe a meu conhecimentoemail
A cabeça do ramo deve apontar apenas para a mesma cabeçastaging
e ambos terão os mesmos commits, a mesma história.Eu já vi várias respostas e esse é o único procedimento que me permite corrigir isso sem nenhum conflito.
Se você deseja todas as alterações de branch_new em branch_old, então:
Uma vez aplicados esses quatro comandos, você pode enviar o branch_old sem nenhum problema
fonte
As outras respostas me deram as pistas certas, mas não ajudaram completamente.
Aqui está o que funcionou para mim:
Sem a quarta etapa da fusão com a nossa estratégia, o push é considerado uma atualização sem avanço rápido e será rejeitado (pelo GitHub).
fonte
merge -m 'This is not my beautiful house.' -s ours origin/email
.Se você é como eu e não deseja lidar com a mesclagem, pode executar as etapas acima, exceto usar força em vez de mesclar, porque isso criará uma trilha de papel de registro que distrai:
Nota: Isso é apenas se você REALMENTE nunca quiser ver o material novamente por e-mail.
fonte
Eu queria mesclar duas ramificações para que todo o conteúdo
old_branch
fosse atualizado com o conteúdo denew_branch
Para mim, isso funcionou como um encanto:
fonte
E se:
fonte
Outras respostas pareciam incompletas.
Eu tentei abaixo na íntegra, e funcionou bem.
NOTA:
1. Faça uma cópia do seu repositório antes de tentar abaixo, por segurança.
Detalhes:
1. Todo o desenvolvimento acontece no ramo de desenvolvimento
2. qa ramo é apenas a mesma cópia do desenvolvimento
3. De tempos em tempos, o código de desenvolvimento precisa ser movido / sobrescrito no ramo qa
então precisamos sobrescrever qa branch, do dev branch
Parte 1:
Com os comandos abaixo, o antigo qa foi atualizado para o desenvolvedor mais recente:
O comentário automático para o último push é apresentado abaixo:
Este comentário parece reverso, porque a sequência acima também parece reversa
Parte 2:
Abaixo estão inesperados, novos commits locais no dev, os desnecessários,
então precisamos jogar fora e tornar o dev intocado.
Parte 3:
Verifique se tudo está como o esperado:
Isso é tudo.
1. qa antigo agora é sobrescrito pelo novo código de ramificação do desenvolvedor
2. o local está limpo (origem remota / dev é intocado)
fonte
A maneira mais fácil de fazer isso:
Agora, o ramo de email e a preparação são os mesmos.
fonte
email
ramificação. É como excluir oemail
ramo e criá-lo novamente no início dostaging
ramo.fonte
Este não altera a ramificação mais recente original e oferece a oportunidade de fazer outras modificações antes da confirmação final.
fonte