J'ai lu quelques articles sur les meilleures pratiques de Git Flow. Il existe de nombreux types de branches git (par exemple: [1], [2]):
+ Master
+ Develop
+ Feature
+ Bug
+ Proof of concept
+ Release
+ Hotfix
Quelle est la différence entre les types Master
et Release
?
Quelle est la différence entre les types Feature
et Develop
?
Pour le workflow git, comme présenté dans [1]:
feature
: Toutes les fonctionnalités/nouvelles fonctions/refactorisations majeures sont effectuées dans les branches feature
, qui se ramifient et sont fusionnées dans la branche develop
(généralement après une sorte d'examen par les pairs).release
: Lorsque suffisamment de fonctionnalités se sont accumulées ou que la prochaine période de publication approche, une nouvelle branche release
est dérivée de develop
, qui est uniquement dédié aux tests/correction de bogues et à tout nettoyage nécessaire (par exemple, changer certains noms de chemin, différentes valeurs par défaut pour l'instrumentation, etc.).master
Une fois que le QA est satisfait de la qualité, la branche release
est fusionnée dans master
(et aussi de nouveau dans develop
). C'est alors ce qui est expédié/utilisé par les clients.hotfix
Si un problème majeur est détecté après la publication, le correctif est développé dans une branche hotfix
, qui est dérivée du maître. Ce sont les seules branches qui se ramifieront jamais hors du maître.master
est un commit de fusion (à partir d'une branche release
ou hotfix
) et représente une nouvelle version qui est expédiée au client.Veuillez noter que ce modèle est principalement destiné à a) les grands projets logiciels qui suivent b) le versionnage des versions classiques et c) ont une équipe QA distincte. De nombreux référentiels populaires sur GitHub suivent un modèle plus simple.
La différence entre master
et release
est que la branche master
est ce que vos clients/utilisateurs utilisent. Il s'agit de la succursale effectivement installée ou vendue.
Dans de nombreuses équipes, la branche master
(généralement également appelée master
) est également la branche release
. Mais ce n'est pas toujours le cas. Dans les grandes entreprises ou les entreprises ayant un département/équipe de test ou d'assurance qualité séparé, la branche principale est la branche qui est vendue aux clients, mais la branche de publication est celle qui est testée. Notez que pour certains projets, l'exécution d'un test complet peut prendre une semaine ou plus, il est donc logique d'avoir une branche que les testeurs peuvent tester mais est stable (les développeurs ne poussent pas constamment les mises à jour).
La différence entre feature
et develop
provient du même raisonnement. La branche develop
(généralement appelée develop
ou dev
) est la branche du développeur stable. Dans le logiciel de contrôle de source traditionnel, la branche develop est votre serveur repo. C'est la branche que tous les développeurs ont en commun. C'est la branche avec laquelle vous commencez le développement.
Une branche de fonctionnalité, d'autre part, est votre propre branche personnelle. Pendant le développement d'une fonctionnalité/histoire/module, vous modifierez bien sûr beaucoup le code. Et pour profiter de git, vous devez vous engager tôt et vous engager souvent. Mais le code sur lequel vous travaillez est par définition instable (non finalisé) et peut entraîner des modifications de rupture pour d'autres développeurs. Vous développez donc sur votre propre branche (dérivée de develop) jusqu'à ce que votre code soit prêt à être fusionné pour se développer.