J'ai regardé quelques vidéos sur les scripts git-flow et un terme qui revient est "fusion arrière" - par exemple le correctif est fusionné en master et en arrière fusionné en develop.
Je suppose que la fusion arrière est un concept et non une commande native git. Quelles commandes exactes comprennent une opération de fusion arrière?
L'utilisation du terme "fusion arrière" est généralement quelque peu arbitraire.
Cela signifie simplement de faire une fusion, comme toute autre, mais dans une direction qui est "en arrière" par rapport au flux normal des conventions de branchement. Si vous visualisez des branches disposées comme
master hotfix release dev feature
| | | | |
| | | | |
| | | | |
| | | | |
puis change normalement "flux" de droite à gauche - fonction à développer pour libérer à master. Mais alors que les correctifs sont assez loin à gauche - ils sont créés à partir de master - ils doivent toujours être fusionnés "vers la droite" dans dev
, donc certaines personnes décrivent cela comme une fusion en arrière ou une fusion en arrière.
À mon avis, ce n'est pas l'utilisation la plus convaincante du terme, car il peut être lu pour impliquer que la fusion opposée (de dev à une branche de correctif) était une "fusion directe" - mais en fait, c'est quelque chose qui ne devrait pas être terminé. Dans ce cas, la direction "vers l'arrière" concerne davantage le flux général des changements si vous visualisez les branches d'une manière particulière comme ci-dessus.
Une utilisation plus convaincante du terme est lorsque vous avez une branche de fonctionnalité à longue durée de vie (qui elle-même est quelque chose d'un anti-modèle dans les processus agiles qui sont susceptibles d'utiliser gitflow; mais parfois vous pouvez en avoir besoin). Dans ce cas, vous devez périodiquement mettre à jour votre fonctionnalité longue durée à partir de dev, afin que les deux ne s'écartent pas trop, ce qui entraînerait un désastre d'un conflit de fusion plus tard. (Et cela ouvre toute une boîte de vers sur les fusions "inutiles", ce qui fait une bonne histoire, et git rerere
... mais je m'égare.) Cela peut clairement être appelé une fusion arrière parce que l'opposé - fusionner votre fonctionnalité en dev - est une utilisation normale et classique de la fusion dans le modèle de branche.
Ce ne sont que deux commandes de fusion ordinaires:
git checkout master
git merge hotfix
git checkout develop
git merge hotfix
Vous pouvez penser au flux "normal" de validations provenant de votre branche de développement vers master
lorsque le travail est terminé. Dans une fusion arrière, les validations circulent dans la direction opposée, de hotfix
into votre branche de développement.
Backmerge n'est rien d'autre que ajoutez vos modifications de correctif dans votre branche de travail actuelle.
Disons que vous avez deux branches Develop et Master
Vous avez trouvé un bug majeur sur Master. Vous l'avez corrigé sur la branche Master elle-même en tant que correctif. Plus tard, vous devez ajouter votre modification de correction de bogue dans votre branche de travail actuelle c'est-à-dire la branche Develop vous devez donc faire back-merge comme ceci