Le workflow n'utilise qu'une seule branche éternelle.
Les branches de fonctionnalité sont le support du travail de développement au jour le jour,
c'est pourquoi elles sont de loin les plus courantes de toutes les branches.
Elles sont utilisés pour développer de nouvelles fonctionnalités et des corrections de bogues pour la prochaine version.
Elles sont généralement nommés selon feature/mafonctionnalité.
Pour démarrer une branche de fonctionnalité, il suffit de créer une nouvelle branche à partir du master :
$ git checkout -b feature/mafonctionnalité masterUne fois que le travail sur la fonctionnalité est terminé, il faut l'intégrer de nouveau dans master.
Utiliser la commande rebase de Git (avec le commutateur -i, signifiant interactif) pour intégrer la branche de fonctionnalité avec master :
$ git checkout feature/mafonctionnalité
$ git rebase -i master
$ git checkout master
$ git merge --ff-only feature/mafonctionnalité
$ git push origin master
$ git branch -d feature/mafonctionnalitéAvantages :
- Rebaser avant l'intégration avec
mastervous permet de nettoyer l'historique de la branche avant de le rendre public, ce qui se traduit par un meilleur historique final atterrissant surmaster. - L'historique linéaire rend les choses plus simples et plus faciles à trouver, surtout quand on regarde l'historique par fichier.
Inconvénients :
- La réinitialisation de l'ensemble de la fonctionnalité nécessite la réinitialisation de plusieurs validations.
Si la branche de fonctionnalité a été poussée vers le référentiel central, vous devez maintenant la supprimer :
$ git push origin :feature/mafonctionnalité
La convention d'appellation pour celles-ci est release/<numéro-de-version>.
Par exemple, nous démarrons ici la branche pour la version 2.3.0 sur un commit avec hash 9efc5d :
$ git checkout -b release/2.3.0 9efc5d
Une fois le processus de validation terminé, la pointe de la branche est étiquetée avec le numéro de version.
Après cela, la branche doit être fusionnée en master pour être versionnée en permanence :
$ git checkout release/2.3.0
$ git tag 2.3.0
$ git checkout master
$ git merge release/2.3.0
$ git push --tags origin master
$ git branch -d release/2.3.0
Encore une fois, si vous avez poussé la branche release vers le référentiel central, vous devez maintenant la supprimer :
$ git push origin :release/2.3.0