Pour fusionner la branche actuelle dans une autre branche sans extraire l'autre branche:
Fusion rapide
C'est vraiment simple. Par définition, une fusion à avance rapide signifie simplement que le pointeur de branche est avancé dans l'arborescence de validation. Il vous suffit donc de simuler cela:
git branch -f master dev
Avertissements: cela suppose que cela master
pointe vers un commit qui est également dans une dev
branche ou une autre branche. Sinon, vous risquez de perdre votre travail! Contrairement à git merge
ce qui créera un commit de fusion (ou se plaindra) lorsque l'avance rapide n'est pas possible, cette méthode force silencieusement le pointeur de branche à pointer vers un autre commit.
Cela suppose également que vous êtes le seul à travailler sur le repo et / ou que vous savez ce que vous faites.
Astuce: Si vous avez effectué un git fetch
et que vous avez de nouveaux validations origin/master
, vous pouvez déplacer la master
branche sans extraire en utilisant:
git branch -f master origin/master
Fusionner via la validation de fusion
Ce n'est pas toujours possible. Pour créer une validation de fusion, vous devez effectuer une opération de fusion. Et pour effectuer une opération de fusion, vous devez avoir des commits dans l'autre branche qui ne sont pas dans la branche actuelle.
Si vous avez des commits dans la master
branche qui ne sont pas dans la dev
branche, vous pouvez:
Avertissement: Ceci est simplement une preuve de concept, juste pour montrer qu'il est parfois possible de faire une fusion avec l'autre branche sans vérification. Si vous souhaitez l'utiliser tous les jours, vous voudrez probablement lui créer un alias en utilisant la redirection shell ou créer un script shell pour cela. Là encore, vous pouvez également créer un script shell pour le processus plus court indiqué dans la question.
git checkout -b temp
git merge --no-ff -e master
git branch -f master temp
git checkout dev
git branch -D temp
Explication:
- Découvrez une branche temporaire qui pointe vers le même commit que la branche actuelle.
Fusionnez master
dans la branche temporaire et lancez l'éditeur de message de validation. Si vous voulez que le commit de fusion ressemble à ce que vous aviez fusionné la dev
branche dansmaster
, modifiez-la à partir de ceci:
Merge branch 'master' into temp
pour ça:
Merge branch 'dev'
Pointe: vous pouvez utiliser à la -m "Merge branch 'dev'"
place de-e
pour être plus rapide.
- Mettre à jour le
master
pointeur de branche pour qu'il pointe vers la validation de fusion.
- Vérifiez
dev
succursale.
- Forcer la suppression de la branche temporaire.
Cela touche toujours votre arbre de travail, mais de manière minimale. Il ne ramène pas l'arborescence à l'état d'origine master
juste pour apporter à nouveau les changements de développement. Certains peuvent ne pas s'en soucier, mais pour d'autres, cela peut être important.