Git Flow : qu’est-ce que c’est et comment gérer les branches ? Des exemples !

Si vous connaissez déjà Git, vous avez probablement déjà entendu parler de Git Flow. Il propose un flux de travail facile avec de nouveaux types de commandes pour chaque action de votre projet, qu’il s’agisse d’ajouter une nouvelle fonctionnalité, de corriger un simple bogue ou même d’étiqueter une nouvelle version.

Conçu dans un petit blog à la mi-2010, Git Flow a pris beaucoup d’ampleur depuis. Ainsi, il est essentiel que ceux qui travaillent déjà dans le domaine connaissent cet outil qui aide tant à la structuration et au développement avec Git.

C’est pourquoi, dans cet article, nous allons tout vous montrer sur Git Flow. Outre des exemples pratiques, nous verrons son principales commandes, avantages et comment est le installation de cet outil sur votre machine. Bonne lecture !

  • Qu’est-ce que Git Flow ?
  • Comment fonctionne-t-il et quelles sont les branches de Git Flow ?
  • Commandes du flux Git
  • Installation de Git Flow
  • Comprendre Git Flow avec des exemples pratiques !
  • Quels sont les avantages et les inconvénients de Git Flow ?
  • Découvrez d’autres flux Git

Qu’est-ce que Git Flow ?

Il s’agit d’un flux de travail pour Git créé pour faciliter le processus de développement avec une série de nouvelles commandes. Le nom derrière ce modèle est celui de Vincent Driessen qui, en 2010, a écrit sur son blog personnel la façon qu’il pensait être la plus simple de travailler avec Git à grande échelle.

Même s’il s’agit d’une méthode qui facilite notre travail, il convient d’émettre quelques réserves quant à la façon dont elle est appliquée : si elle est mal utilisée, Git Flow peut devenir assez inefficace et générer une expérience pas très agréable.

En outre, il existe un dépôt sur GitHub où nous pouvons voir le code source ouvert du modèle créé. Le code lui-même est entièrement réalisé en Shell et le commit le plus récent date de 2012 (il y a longtemps, hein).

Dans l’image suivante, nous voyons la structure de ce à quoi ressemble le flux Git :

Image représentant le flux Git

Comment fonctionne-t-il et quelles sont les branches de Git Flow ?

La première étape pour comprendre le flux Git est de comprendre comment fonctionnent les branches qui sont établies par défaut. Avec eux, en plus d’obtenir une nomenclature simple et ordonnée, nous avons la catégorisation qui les rend plus objectifs et faciles à comprendre pour les personnes extérieures au projet.

Branche principale/maîtresse

Branche principale, contient associée à elle les versions de publication pour faciliter l’accès et la recherche des anciennes versions. Nous comprenons également qu’il s’agit du miroir du programme en amont, puisque la le dernier code de cette branche devrait toujours être en production. De plus, la seule façon d’interagir avec cette branche est par le biais d’un Hotfix ou d’une nouvelle version.

Développement de la branche

Il s’agit de l’une des principales branches et sert de fil conducteur aux derniers développements. Comme on le voit sur l’image, c’est un copie de la branche principale contenant certaines fonctionnalités qui n’ont pas encore été publiées. En tant que tel, il constitue la base de l’élaboration de nouvelles fonctionnalités.

Caractéristique de la branche

Une des branches temporaire et auxiliaire de notre flux, étant la branche qui contient la nouvelle fonctionnalité spécifique à notre application. La convention d’appellation y est la suivante fonctionnalité/nom de la ressource qui sera utilisé dans notre flux de travail. Nous ne pouvons pas oublier que chaque nouvelle fonctionnalité commence et se termine à partir de de développer.

Correction de la branche

C’est aussi une branche auxiliaires et temporairesutilisé lorsqu’un problème dans l’environnement de production dans lequel la correction doit être faite immédiatement. Nous avons réussi à corriger l’erreur et à fusionner la solution avec les branches main/master et develop afin que notre code ne soit pas perdu.

Libération de la branche

Enfin, le branche de libération de notre programme. Dans cette branche, nous fusionnons ce qui est prêt dans notre branche de développement et le « dump » vers la branche principale. De plus, une nouvelle version balisée est créée dans notre projet afin de disposer d’un historique complet du développement.

Commandes du flux Git

Ensuite, nous examinerons les principales commandes de Git Flow, depuis le démarrage jusqu’à la mise en place de l’environnement de production. Pour que vous puissiez suivre correctement cette partie, il est recommandé d’avoir quelques connaissances de base des commandes Linux ou même des commandes CMD de Windows :

Init

C’est la commande initiale de Git Flow et elle sert à configurer le dépôt avec les branches du flux par défaut. De la même manière que vous devez initialiser git dans un nouveau répertoire, cette commande a le même but.

Fonctionnalité

Dans le cadre de cette commande, nous avons quelques ramifications possibles, telles que :

start nome_feature  

Commande qui démarre une nouvelle fonctionnalité, dans laquelle nous avons la création d’une branche avec la nomenclature feature/feature_name.

finish nome_feature  

Commande permettant de mettre fin à une fonctionnalité précédemment créée et de la fusionner avec la branche Develop.

publish nome_feature  

Si vous travaillez en équipe et que vous souhaitez partager votre nouvelle fonctionnalité, cette commande publie sur le serveur distant qui est configuré dans votre Git local.

pull nome_feature  

Contrairement à la précédente, celle-ci sert à obtenir une fonctionnalité du serveur distant.

Communiqué de presse

La terminologie étant similaire, nous allons examiner les commandes concernant la libération :

start nome_release [BASE]  

Utilisez cette commande pour démarrer une version basée sur la branche de développement, ici vous pouvez optionnellement passer le code d’un commit à utiliser comme base.

publish nome_release   

Il est conseillé de publier la branche de publication après l’avoir créée pour permettre aux autres développeurs d’y apporter leurs contributions. La commande est similaire à la publication d’une nouvelle fonctionnalité.

release track nome_release  

Encore une fois, si vous voulez suivre n’importe quelle version distante de la version, il y a cette commande.

finish nome_release

Avec cette commande, vous terminer et créer une nouvelle versionEnsuite, une série d’actions sont effectuées :

  • rejoint la branche dans Main/Master ;
  • crée un tag avec le nom de la branche ;
  • fusionne également la branche avec Develop ;
  • enfin, supprime la branche elle-même.

Hotfix

Enfin, nous avons les commandes du correctif :

hotfix start nome_hotfix [BASENAME]  

A partir du dernier commit de la branche Main/Master, une branche est créée avec la nomenclature hotfix/hotfix_name. Il est obligatoire de passer le nom du hotfix et facultativement vous pouvez passer un BASENAME.

hotfix finish nome_hotfix  

Nous avons à nouveau la commande pour la finalisation du correctif. Une fois le processus final terminé, nous voyons qu’une fusion du correctif dans les branches main/master et development et nous avons aussi création d’une étiquette sur main/master.

Installation de Git Flow

Actuellement, Git Flow est déjà inclus dans les dernières versions de Git et vous pouvez télécharger Git sur tout système d’exploitation moderne. Cependant, il existe quelques moyens de il suffit de télécharger le flux Git :

Linux

Dans Linux, nous avons une multitude de systèmes d’exploitation. Essayons donc de laisser le plus de commandes possible :

Debian

apt-get install git-flow

Archlinux

yay -S gitflow-avh

Fedora

sudo dnf install gitflow

Gentoo

emerge --ask git-flow

FreeBSD

pkg install gitflow

Si vous n’arrivez toujours pas à installer, essayez d’utiliser ces commandes :

curl -OL https://raw.github.com/nvie/gitflow/develop/contrib/gitflow-installer.sh
chmod +x gitflow-installer.sh
sudo ./gitflow-installer.sh

Mac

Nous avons également plusieurs options dans ce cas, comme par exemple :

Homebrew

brew install git-flow

MacPorts

port install git-flow

Wget

wget --no-check-certificate -q -O - https://github.com/nvie/gitflow/raw/develop/contrib/gitflow-installer.sh | sudo bash

Curl

curl -L -O https://raw.github.com/nvie/gitflow/develop/contrib/gitflow-installer.sh
sudo bash gitflow-installer.sh

Windows

Pour finir, nous avons cette option :

Cygwin

wget -q -O - --no-check-certificate https://github.com/nvie/gitflow/raw/develop/contrib/gitflow-installer.sh | bash

Si vous ne parvenez toujours pas à installer ce logiciel, rendez-vous sur la page officielle d’installation de Git Flow et recherchez votre système d’exploitation.

Comprendre Git Flow avec des exemples pratiques !

Maintenant que nous avons installé et que nous connaissons les bases de ce flux, jetons un coup d’oeil à quelques exemples avec Git Flow:

Créer le référentiel

Tout d’abord, créons un référentiel pour pouvoir exécuter nos tests.

mkdir teste-git-flow // Cria uma nova pasta com o nome “teste-git-flow”
cd teste-git-flow  // Entra na pasta que foi criada
git init      // Inicia o repositório

Démarrer le flux Git

Déjà dans le dossier créé, nous devons exécuter la commande de démarrage :

git flow init

Une série de questions apparaîtra concernant la dénomination des branches et certaines configurations. Pour le moment, nous vous recommandons de appuyez sur la touche Entrée sur toutes les lignes :

Nomenclatures

En plus de créer tous les structure pour notre référentiella commande fait aussi déjà le checkout pour la branche Develop.

Fonctionnalité

Démarrage d’une nouvelle fonctionnalité

Imaginons que nous développions un écran d’enregistrement et que nous voulions séparer notre développement de la branche principale. Nous créons donc une nouvelle fonctionnalité :

git flow feature start tela-cadastro
Démarrer une nouvelle fonctionnalité
Démarrer le flux Git d'une nouvelle fonctionnalité

Pour notre test, nous allons créer un fichier HTML et faire un commit :

touch tela-cadastro.html        // Criando arquivo html
git add .                // Adicionando arquivo criado
git commit -m "Criando tela de cadastro" // Fazendo commit

Terminer le film

Puisque nous avons terminé le développement, exécutons maintenant la commande pour fermer cette branche et la fusionner avec develop :

git flow feature finish tela-cadastro
Fermeture de la branche Git Flow

Comme nous pouvons le constater, certaines actions ont été entreprises :

  • passer de la fonctionnalité au développement ;
  • notre branche de fonctionnalité a été supprimée ;
  • a été vérifié pour être développé.

Communiqué de presse

Lancement d’un communiqué

Simulons maintenant une version avec le nom « release-test » :

git flow release start release-teste
Démarrer une version dans Git Flow

Nous pouvons voir qu’une branche a été créée et que nous avons été automatiquement redirigés vers celle-ci.

Finalisation d’un communiqué

Finalisons maintenant notre communiqué :

git flow release finish release-teste 1.0.0
Finalisation de la version Git Flow

Lorsque la commande est exécutée, un écran ressemblant à celui-ci apparaît. Ne vous inquiétez pas.c’est juste un programme appelé Vim qui est un éditeur de texte pour le terminal. Pour poursuivre notre tutoriel, suivez les étapes suivantes :

  • appuyez sur la touche i et écrire un message, dans mon cas je vais écrire « finalisation ».
  • puis appuyez sur Esc et tapez la commande :wq à sauvegarder et fermer Vim.
Résumé des actions du flux git

Comme nous pouvons le voir, plusieurs actions ont été effectuées sur notre dépôt, telles que :

  • fusionner notre branche release dans main/master et develop ;
  • création d’un tag « release-test » dans main/master ;
  • suppression de notre branche de publication ;
  • checkout pour la branche develop.

Très facilement, nous avons réussi à finaliser et créer une nouvelle version pour notre projet de test.

Hotfix

Lancement d’un correctif

Passons à une autre démonstration. Exécutez d’abord la commande pour démarrer un nouveau hotfix :

git flow hotfix start hotfix-teste
Démarrage du flux git hotfix

Comme pour les autres commandes, une nouvelle branche est créée pour nous avec le nom que nous avons donné. En outre, nous y sommes relogés.

Une fois encore, à des fins de test, je vais créer un nouveau fichier JavaScript simulation d’une fixation.

touch arquivo-correcao.js   // Criando arquivo JavaScript
git add .           // Adicionando arquivo criado
git commit -m "Correção do bug" // Fazendo commit

Finalisation d’un correctif

Nous allons maintenant mettre au point notre solution :

git flow hotfix start hotfix-teste
finalisation du correctif dans le flux Git

Nous sommes à nouveau confrontés à l’écran de Vim, mais nous avons maintenant l’expérience de cette situation. Pour rappeler, appuyez sur la touche i et écrire un message. Ensuite, appuyez sur Esc et le type :wq.

Résumé des actions du correctif

Le processus de finalisation d’un correctif est très similaire à celui d’une version. Avec cela, nous fusionnons notre branche avec main/master et développons. Un tag est également créé sur main/master, notre branche de patch est supprimée et enfin, nous sommes intégrés dans le développement.

Quels sont les avantages et les inconvénients de Git Flow ?

Comme dans toute chose dans la vie, nous avons le bon et le mauvais côté, cela s’applique également à Git Flow et dans cette partie nous allons montrer quelques points d’attention qui devraient être pris en compte avant d’essayer d’utiliser cet outil.

Quels sont les avantages de Git Flow ?

Les différents types de branches et de nomenclatures rendent le travail beaucoup plus simple, plus intuitif et plus facile à organiser. Nous sommes en mesure de tester efficacement grâce au système de fonctionnalités et nous pouvons également réaliser plusieurs versions extrêmement facilement en utilisant seulement quelques commandes.

L’un des principaux avantages que nous avons remarqué en utilisant Git Flow est le suivant évolution parallèle avec l’isolement des nouvelles fonctionnalités nous nous séparons du travail qui a déjà été fait. Comme indiqué, les nouveaux développements (comme les fonctionnalités ou même les corrections de bogues) sont effectués dans des branches séparées et fusionnées dans les branches principales, à la fois main/master et develop.

Nous avons aussi la partie collaboration, où nous pouvons partager très facilement notre développement avec d’autres des développeurs. Il suffit d’envoyer notre branche de développement sur le serveur distant où n’importe qui peut se brancher et continuer le travail. Cela nous permet également de savoir ce que chaque personne fait sur le projet.

Dans le cadre de Git Flow, nous avons pu utiliser des appels de correctifs pour résoudre rapidement les problèmes en production. Ainsi, nous pouvons fusionner les branches main/master et development, ce qui rend très claire la façon de corriger un bogue.

Enfin, il est bon de rappeler le Zone de rassemblement, qui est essentiellement notre branche de développement qui a ce nom, parce que comme chaque nouvelle fonctionnalité est créé et terminé à partir du développement, nous parvenons à avoir un endroit où nous pouvons tester toutes nos nouvelles fonctionnalités, sans nous soucier de savoir si nous sommes en production ou non.

Quels sont les principaux problèmes et inconvénients de Git Flow ?

Commentons maintenant certaines faiblesses de Git Flow. Tout d’abord, nous pouvons souligner que ce n’est pas pour tout le mondec’est-à-dire, en fonction de la complexité du projet sur lequel vous travaillez, la structure de Git Flow peut rendre le processus très compliqué et le développement plus lent..

En raison de la longueur du cycle de développement, Git Flow ne s’adaptent pas bien à DevOps. En effet, il ne peut pas prendre en charge l’intégration et le déploiement continus, ce qui le rend totalement obsolète dans certains cas.

Enfin, nous pouvons souligner que le flux et le processus lui-même sont très complexes. Il suffit de penser à la complexité du contrôle d’un référentiel dans lequel des changements se produisent en permanence dans les branches main/master et development. En plus de cela, nous avons de nombreux problèmes spécifiques et communs dans ce flux, car nous avons plusieurs branches qui sont créées en parallèle.

Connaître d’autres flux Git

Même si Git Flow est très populaire depuis sa création en 2010, nous devons souligner que même son créateur (Vincent Driessen) admet que ce cadre n’est peut-être pas le meilleur pour chaque équipe de développement. Il en parle un peu dans une note de réflexion écrite en mars 2020 :

« Les applications Web sont généralement livrées en continu, sans retour en arrière, et vous n’avez pas besoin de prendre en charge plusieurs versions du logiciel en cours d’exécution. Ce n’est pas le cas du logiciel que j’avais en tête… il y a 10 ans. » Si vous souhaitez lire le texte complet, n’hésitez pas, il s’agissait juste d’une traduction rapide.

Actuellement, nous avons deux modèles pour Git qui sont plus simples et acceptent les fameuses livraisons continues.

Flux GitHub

Plus simple que Git Flow, Github Flow est parfait pour les petites équipes et les programmes ou projets web qui ne nécessitent pas la prise en charge de plusieurs versions. Flux GitHub permet une bonne utilisation de la livraison et de l’intégration continuestout cela en raison de la simplicité avec laquelle le modèle a été créé.

Il est évident que nous devons prendre en compte certaines questions. L’absence de branches de développement dédiées rend l’ensemble du travail beaucoup plus vulnérable aux bogues en production.

Flux GitLab

Plus simplifié que Git Flow, GitLab Flow est plus organisé et mieux structuré que Github Flow. En elle Nous sommes introduits dans certaines branches de l’environnement, comme la production, la pré-production et même la version.selon le cas.

Moyennant quelques modifications mineures, GitLab Flow permet la gestion des versions et la livraison continue. Il est clair que nous avons les mêmes problèmes que GitHub Flow dans ce modèle.

Un flux

One Flow est une alternative proposée par un billet d’Adam Ruka écrit en 2015 sur son blog, dans lequel il indique que Git Flow est considéré comme nuisible. La principale condition pour utiliser One Flow est que chaque nouvelle version de production soit basée sur la version précédente. La principale différence entre One Flow et Git Flow est que ce modèle ne contient pas la branche de développement.

Quelques avantages :

  • L’historique de Git sera plus propre, moins encombré et plus lisible ;
  • est flexible en fonction des besoins de l’équipe ;
  • est idéal lorsque vous avez besoin d’une seule version en production.

Quelques inconvénients :

  • Déconseillé pour la livraison et l’intégration continues ;
  • non recommandé lorsque vous avez besoin de plus d’une version en production.

Nous sommes arrivés à la fin d’un autre article et nous espérons que vous avez compris les bases de Git Flow. Grâce aux sujets abordés et aux exemples pratiques, il est plus facile de comprendre les concepts de ce cadre. Comme nous l’avons commenté, le Git Flow n’est pas une solution miracle pour résoudre les problèmes liés à Git, mais plutôt une flux de travail ce qui, dans certains cas, facilite le développement de nouvelles fonctionnalités et la gestion des versions du projet.

Vous ne devez pas toujours utiliser toutes les règles et conditions déterminées par le cadre. Vous pouvez utiliser les bonnes parties du flux, comme le développement parallèle, la correction des bogues en production et encore plus de correction des bogues en développement. Cela étant, ne pas être coincé avec les conditions imposées par Git FlowSi vous n’avez pas d’expérience dans ce domaine, sortez des sentiers battus et adaptez-vous à votre type de travail.

Si vous vous êtes intéressé à Git et que vous souhaitez en savoir plus, voici un article présentant les 10 commandes Git les plus importantes.