Méthodologie

Comment structurer ses dépôts avec Git Flow ?

Comment structurer ses dépôts avec Git Flow ?

J’expliquais dans l’un de mes précédents articles qu’il était essentiel de versionner son code. Mon choix s’était donc porté sur Git.

Mais Git n’est pas qu’un outil de versioning ! C’est aussi un outil de partage et de collaboration !

Quand on travaille seul sur un projet Git et que l’on effectue que des commits sur son unique branche master pour un petit projet d’école ou perso : ça PEUT passer.

Mais lorsque l’on commence à travailler à plusieurs sur un projet sensible qui impacte la production alors il faut une grande rigueur et une bonne organisation dans la gestion de son dépôt. Hors mal utiliser Git va vous rendre contre-productif et être calvaire pour la gestion de votre projet et de votre dépôt.

Heureusement, il existe des méthodes déjà bien pensées pour bien s’organiser et la plus connue d’entre elles est Git Flow.

Pourquoi utiliser Git Flow ?

Parce qu’il a plusieurs avantages. Tout d’abord, il est simple à comprendre et à mettre en place.

Il est également très populaire, ce qui fait que pas mal d’outils intègrent cette méthode de travail comme je vous le montrerais juste à après.

Ensuite, il est très flexible et adaptable suivant votre mode de fonctionnement. On n’est pas obligé de respecter à la lettre la méthode.

Et enfin, c’est une bonne organisation pour vos dépôts et qui a fait ses preuves.

Dernier argument, et celui-ci est plutôt personnel, c’est ce qu’on utilise où je travaille.

Explication de Git Flow

Git Flow est un workflow largement répandu et qui fonctionne sur 2 niveaux de branche.

Le premier niveau de branche représente les branches principales. Elles sont permanentes et au nombre de 2 : la branche master et la branche develop.

La branche master est une branche dîtes de production. La branche develop est une branche de développement.

Évidemment, si tout le monde travaille sur ces 2 branches directement cela deviendra très vite l’anarchie.

Le deuxième niveau de branche représente des branches dites de travail. Elles sont donc temporaires et on y retrouve 3 types :

  • La branche de « Feature » qui est utilisée pour développer une nouvelle fonctionnalité. Cette branche est toujours tirée depuis la branche develop. Une fois terminée, on la merge sur develop
  • La branche « Release » qui est utilisée pour produire une nouvelle version de son projet. Cette branche est toujours tirée depuis la branche develop. Une fois terminée, on la merge sur master ET sur develop car il est tout à fait possible de faire des commits sur cette branche pour résoudre des bugs de dernière minute par exemple.
  • La branche « Hotfix » qui est utilisée pour réparer un bug urgent en production. Cette branche est toujours tirée depuis la branche master. Une fois terminée, on la merge sur master ET sur develop.

Comme vous pouvez le voir, c’est assez structuré et organisé comme méthodologie.

Comprenez juste comment fonctionne chaque type de branche uniquement.

Git Flow offre des commandes qui permettent de ne pas se poser la question d’où l’on part et quel doit être l’arrivée. Il faut juste se poser la question : qu’est-ce que je suis en train de faire ?

La commande pour initialiser Git Flow sur un dépôt Git est tout simplement : gît flow init. Vous devrez répondre à quelques questions pour le configurer.

Si vous utilisez Git Flow de manière standard, vous pouvez laisser la configuration par défaut (taper sur la touche entrée de votre clavier pour chacune des questions). Sinon adaptez la logique suivant la vôtre pour plus de flexibilité.

Utilisation des branches de travail

Pour créer une nouvelle branche feature, release ou hotfix, on appelle la commande git flow suivi du mot-clé correspondant à ce que l’on fait puis le mot-clé start et enfin le nom de la branche.

Ce qui donne par exemple pour une feature : git flow feature start ma_branche. Git Flow tire une branche de develop et vous bascule sur votre nouvelle branche automatiquement.

Lorsque vous avez terminé votre branche il suffit de rappeler la même commande, mais on remplace start par finish ce qui donne : git flow feature finish ma_branche. La branche sera donc merge directement sur develop et supprimer votre branche automatiquement.

Il n’est pas nécessaire d’utiliser Git Flow en ligne de commande. La plupart des IDE et client Git intègre Git Flow. On peut donc faire la même chose en interface graphique.

Toutefois, vous devez l’installer sur votre machine pour l’utiliser. Vous trouverez toutes les informations sur ce lien.

Démonstration

Pour mieux comprendre, rien de tel qu’un exemple en live :

Bonus : je vous montre dans la vidéo vers la fin (32:38) comment nous utilisons Git Flow où je travaille par rapport à nos besoins et notre environnement de travail.

Partager ce contenu
  • 40
    Partages

Leave a Comment

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.