Vous pourriez bénéficier du flux de travail décrit par Scott Chacon dans Pro Git . Dans ce flux de travail, vous avez deux branches qui existent toujours, maîtriser et développer .
master représente la version la plus stable de votre projet et vous ne déployez en production qu'à partir de cette branche.
develop contient des changements en cours et qui ne sont pas nécessairement prêts pour la production.
À partir de la branche de développement , vous créez des branches de rubrique pour travailler sur des fonctionnalités et des correctifs individuels. Une fois que votre fonctionnalité / correctif est prêt à être utilisé, vous le fusionnez dans le développement , à quel point vous pouvez tester comment il interagit avec d'autres branches de sujet dans lesquelles vos collègues ont fusionné. Une fois que le développement est dans un état stable, fusionnez-le dans master . Le déploiement en production à partir du maître doit toujours être sûr .
Scott décrit ces branches de longue date comme des "silos" de code, où le code d'une branche moins stable finira par "passer" à une branche considérée comme plus stable après les tests et l'approbation générale par votre équipe.
Étape par étape, votre flux de travail sous ce modèle pourrait ressembler à ceci:
- Vous devez corriger un bogue.
- Créez une branche appelée myfix basée sur la branche de développement .
- Travaillez sur le bogue dans cette branche de rubrique jusqu'à ce qu'il soit corrigé.
- Fusionner myfix dans develop . Exécutez des tests.
- Vous découvrez que votre correctif est en conflit avec une autre branche de sujet hisfix que votre collègue a fusionnée dans develop pendant que vous travailliez sur votre correctif.
- Apportez plus de modifications dans la branche myfix pour gérer ces conflits.
- Fusionnez myfix dans le développement et réexécutez les tests.
- Tout fonctionne bien. Fusionner développer en maître .
- Déployez-le en production à partir du master à tout moment, car vous savez qu'il est stable.
Pour plus de détails sur ce flux de travail, consultez le chapitre Flux de travail de branchement dans Pro Git.
develop
une «solution» inutile à un problème que git n'a pas. Pour autant que je sache, le succès est dû à un article bien rédigé, quoique mal orienté, sans commentaires autorisés. Voici un contre-article barro.github.io/2016/02Après être arrivé en tant que novice en essayant de trouver une stratégie simple pour enseigner à d'autres développeurs qui n'ont jamais utilisé le contrôle de code source. C'est celui qui convient à http://nvie.com/posts/a-successful-git-branching-model/ J'ai essayé d'utiliser le flux de travail GIT standard qui se trouve dans les pages de manuel, mais cela m'a légèrement confus et mon public complètement.
Au cours des 6 derniers mois, je n'ai eu à résoudre les conflits que deux fois. J'ai ajouté des étapes pour toujours tester après une fusion et pour «récupérer et fusionner» ou «tirer - rebase» beaucoup (une fois le matin et l'après-midi) tout en développant des fonctionnalités. Nous avons également utilisé github.com comme emplacement central pour extraire le dernier code.
la source
default master branch
n'est PAS utilisé le plus souvent être développeur dans ce domaineA successful Git branching model
(J'ai fait mon commentaire ci-dessus, c'est sa propre réponse, comme j'aurais dû au départ.)
De Scott Chacon de Github:
Voir l'article entier pour plus de détails: http://scottchacon.com/2011/08/31/github-flow.html
Notez que les "pull requests" sont une invention de Github, et c'est quelque chose qui est intégré à leur site Web, pas à Git lui-même: https://help.github.com/articles/using-pull-requests/
la source
Utilisez la
master
branche comme branche de développement et créez des branches de version pour effectuer des corrections de bogues.Toutes les nouvelles fonctionnalités continueront
master
pendant la fenêtre de développement (soit validées directement, soit sous forme de branches de sujet avec des pull-requests, à vous - non montrées dans le graphique). Une fois que toutes vos fonctionnalités planifiées sont implémentées, entrez le gel des fonctionnalités et effectuez des tests. Lorsque vous êtes satisfait, marquez la sortiemaster
commev1.0
.Au fil du temps, vos utilisateurs trouveront des bogues
v1.0
, vous voudrez donc créer une branche à partir de cette balise (par exemple, nommez-la après la publication1.0
) et corrigez ces bogues dans la branche. Lorsque vous avez suffisamment de bogues corrigés pour que vous pensiez que cela justifie une nouvelle version, marquez-le commev1.0.1
et fusionnez-le à nouveaumaster
.Pendant ce temps, une nouvelle fenêtre de développement peut se produire sur la
master
branche qui sera éventuellement étiquetéev1.1
.Rincer et répéter.
Cela suit la logique de numérotation de version sémantique .
la source
1.0.1
modifications dansmaster
1.1
le maître après la fusion1.0.1
- cela permet de minimiser les confictions.1.1
est une branche de version et possède des balises représentant l'état exact d'une ou plusieurs versions. Rebaser cette branche vous ferait perdre cette représentation. Je vous recommande fortement de définir vos branches de version pour refuser les poussées forcées pour éviter cela.Dans un VCS, avoir juste une branche "maître" montre rapidement ses limites car vous ne pouvez pas poursuivre tous les efforts de développement en même temps sur une branche.
Cela signifie que vous devez savoir quand créer une succursale .
Mais dans un DVCS (comme dans un VCS «décentralisé»), vous avez également un problème de publication , avec des branches que vous gardez locales dans vos référentiels et des branches vers lesquelles vous poussez ou que vous extrayez .
Dans ce contexte, commencez par identifier votre effort de développement simultané et décidez d'un processus de publication (push / pull). Par exemple (et ce n'est pas le seul moyen):
personne ne doit pousser directement vers prod (d'où la lecture seule)
Tout le monde peut pousser pour mettre à jour la prochaine version.
Tout le monde peut tirer de ladite version afin de mettre à jour son processus de consolidation local.
D'autres processus de gestion des versions existent, comme l' atteste cette question SO .
la source
Lisez les équipes Git Workflow for Agile de ReinH ici: http://reinh.com/blog/2009/03/02/a-git-workflow-for-agile-teams.html
Cela fonctionne très bien pour les petites équipes. Le but ici est de s'assurer que tout ce qui pourrait être potentiellement instable entre dans une branche quelconque. Revenez au maître uniquement lorsque vous êtes prêt à ce que tous les utilisateurs travaillant en dehors de la branche de fonctionnalités puissent l'utiliser.
Remarque: cette stratégie n'est guère spécifique à git, mais git facilite la mise en œuvre de cette stratégie.
la source