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 master
aponte para um commit que também esteja no dev
branch ou em algum outro branch. Caso contrário, você corre o risco de perder o trabalho! Diferente do git merge
que 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 fetch
e tem novas confirmações origin/master
, pode mover a master
ramificaçã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 master
ramificação que não estão na dev
ramificaçã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 master
na 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 dev
ramo 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 -e
ser mais rápido.
- Atualize o
master
ponteiro da ramificação para apontar para a consolidação de mesclagem.
- Confira o
dev
ramo.
- 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, master
apenas para trazer as mudanças de desenvolvimento mais uma vez. Alguns podem não se importar, mas para outros, pode ser importante.