Para mesclar a ramificação atual em outra ramificação sem fazer check-out da outra ramificação:
Mesclagem de avanço rápido
Isso é realmente fácil. Por definição, uma mesclagem de avanço rápido significa simplesmente que o ponteiro da ramificação é movido adiante na árvore de confirmação. Então, tudo que você precisa fazer é simular isso:
git branch -f master dev
Advertências: Isso pressupõe que masteraponte para um commit que também esteja no devbranch ou em algum outro branch. Caso contrário, você corre o risco de perder o trabalho! Diferente do git mergeque criará uma confirmação de mesclagem (ou reclamação) quando o avanço rápido não for possível, esse método força silenciosamente o ponteiro da ramificação a apontar para outra confirmação.
Isso também pressupõe que você é o único que trabalha no repositório e / ou sabe o que está fazendo.
Dica: Se você fez um git fetche tem novas confirmações origin/master, pode mover a masterramificação sem fazer check-out usando:
git branch -f master origin/master
Mesclar via consolidação de mesclagem
Isto nem sempre é possível. Para criar uma consolidação de mesclagem, você deve executar uma operação de mesclagem. E para fazer uma operação de mesclagem, você deve ter confirmações na outra ramificação que não está na ramificação atual.
Se você possui confirmações na masterramificação que não estão na devramificação, é possível:
Isenção de responsabilidade: isso é apenas uma prova de conceito, apenas para mostrar que às vezes é possível fazer uma mesclagem com a outra ramificação sem fazer check-out. Se você quiser usá-lo todos os dias, provavelmente deseja criar um alias usando redirecionamento de shell ou criar um script de shell para ele. Então, novamente, você também pode criar um script de shell para o processo mais curto mostrado na pergunta.
git checkout -b temp
git merge --no-ff -e master
git branch -f master temp
git checkout dev
git branch -D temp
Explicação:
- Confira uma ramificação temporária que aponta para a mesma confirmação que a ramificação atual.
Entre masterna ramificação temporária e inicie o editor de mensagens de confirmação. Se você deseja que o commit de mesclagem pareça ter mesclado o devramo master, edite-o a partir deste:
Merge branch 'master' into temp
para isso:
Merge branch 'dev'
Dica: você pode usar em -m "Merge branch 'dev'"vez de -eser mais rápido.
- Atualize o
masterponteiro da ramificação para apontar para a consolidação de mesclagem.
- Confira o
devramo.
- Forçar exclusão da ramificação temporária.
Isso ainda toca sua árvore de trabalho, mas minimamente. Ele não reverte a árvore até o estado original, masterapenas para trazer as mudanças de desenvolvimento mais uma vez. Alguns podem não se importar, mas para outros, pode ser importante.