Git Flow

Git Flow est un modèle de branchement basé sur Git conçu pour aider les équipes à mieux gérer et publier des logiciels.

Git Flow a été proposé par Vincent Driessen en 2010, et grâce à un ensemble de conventions de nommage de branches et de flux de travail standard, il rend les processus de développement, de test et de publication plus ordonnés et efficaces.

Git Flow se compose principalement des types de branches suivants :master、develop、feature、release、hotfix。

Installation de Git Flow

Linux

Debian/Ubuntu :

sudo apt-get install git-flow

Fedora :

sudo dnf install gitflow
sudo apt-get install git-flow

macOS

Sur macOS, vous pouvez utiliser Homebrew pour installer Git Flow :
brew install git-flow

Installation depuis les sources

Si Git Flow n'est pas disponible dans le gestionnaire de paquets de votre distribution, vous pouvez également l'installer à partir du code source :

git clone https://github.com/nvie/gitflow.git
cd gitflow
sudo make install

Après l'installation, vous pouvez vérifier si Git Flow a été installé avec succès à l'aide de la commande suivante :

git flow version

Windows

Sous Windows, vous pouvez installer Git Flow des manières suivantes :

  • Utiliser Git for Windows: Git for Windows inclut Git Flow. Vous pouvezGit for WindowsInstaller Git, puis utiliser Git Bash pour utiliser Git Flow.

  • Utilisation de Scoop: Si vous utilisez le gestionnaire de paquets Scoop, vous pouvez installer Git Flow avec la commande suivante :

    scoop install git-flow
  • Utilisation de Chocolatey: Si vous utilisez le gestionnaire de paquets Chocolatey, vous pouvez installer Git Flow avec la commande suivante :

    choco install gitflow

Modèle de branches Git Flow

masterbranche:

  • Maintenez toujours un état stable et publiable.
  • Chaque fois qu'une nouvelle version est publiée, elle proviendra dedevelopFusionner la branche dansmasterBranche.

developbranche:

  • Sert à intégrer toutes les branches de développement.
  • Représente les derniers progrès du développement.
  • Les branches de fonctionnalité, les branches de publication et les branches de correctif partent toutes d'ici et finissent par fusionner à nouveau ici.

featurebranche:

  • Sert à développer de nouvelles fonctionnalités.
  • fromdevelopCréation de branche, fusion en retour une fois le développement terminédevelopBranche.
  • Conventions de nommage :feature/feature-name。

releasebranche:

  • Sert à préparer la publication de nouvelles versions.
  • fromdevelopLa branche est créée, les tests finaux et les corrections sont effectués, puis elle est fusionnée en retour dansdevelopetmasterBranche, et étiqueter avec une version.
  • Conventions de nommage :release/release-name。

hotfixbranche:

  • Sert à corriger des problèmes urgents.
  • frommasterCréation de branche, fusion en retour une fois la correction terminéemasteretdevelopBranche, et étiqueter avec une version.
  • Conventions de nommage :hotfix/hotfix-name。

Principes des opérations sur les branches

  • Chaque Commit sur la branche Master doit être tagué, et la branche Develop est créée à partir de Master.
  • Une fois une branche Feature terminée, elle est fusionnée en retour dans la branche Develop, et la branche est généralement supprimée.
  • Une branche Release est créée à partir de Develop, utilisée pour les tests et la correction de bugs. Après la publication, elle est fusionnée en retour dans Master et Develop, et un Tag est créé pour marquer le numéro de version.
  • La branche Hotfix est créée à partir de Master. Une fois terminée, fusionnez-la en retour dans Master et Develop, et taguez-la.1。

Exemples de commandes Git Flow

  • Démarrer une branche Feature :git flow feature start MYFEATURE
  • Terminer une branche Feature :git flow feature finish MYFEATURE
  • Démarrer une branche Release :git flow release start RELEASE [BASE]
  • Terminer la branche Release : fusionner dans Master et Develop, taguer, supprimer la branche Release.
  • Démarrer une branche Hotfix :git flow hotfix start HOTFIX [BASE]
  • Terminer la branche Hotfix : fusionner dans Master et Develop, créer un tag, supprimer la branche Hotfix.

Flux de travail Git Flow

1. Initialiser Git Flow

Tout d'abord, initialisez Git Flow dans le projet. Vous pouvez utiliser un plugin Git Flow (par exemplegit-flow) pour simplifier les opérations.

git flow init

Lors de l'initialisation, vous devez définir les règles de nommage des branches et la branche par défaut.

2. Créer une branche de fonctionnalité

Lorsque vous commencez à développer une nouvelle fonctionnalité, à partir de ladevelopbranche, créez une branche de fonctionnalité.

git flow feature start feature-name

Une fois le développement terminé, fusionnez la branche de fonctionnalité dans ladevelopbranche, et supprimez la branche de fonctionnalité.

git flow feature finish feature-name

3. Créer une branche de publication

Lorsque vous vous préparez à publier une nouvelle version, à partir de ladevelopbranche, créez une branche de publication.

git flow release start release-name

Effectuez les derniers tests et corrections sur la branche de publication. Une fois prêt pour la publication, fusionnez la branche de publication de nouveau dansdevelopetmasterBranche, et étiqueter avec une version.

git flow release finish release-name

4. Créer une branche de correction

Lorsqu'un problème nécessitant une correction urgente est détecté, à partir demasterbranche, créez une branche de correction.

git flow hotfix start hotfix-name

Une fois la correction terminée, fusionnez la branche de correction de nouveau dans lamasteretdevelopbranche, et ajoutez un tag avec une version.

git flow hotfix finish hotfix-name

ExampleOperation

Ce qui suit est un exemple complet d'utilisation de Git Flow en pratique.

Initialiser Git Flow:

git flow init

Créer et terminer des branches de fonctionnalité:

git flow feature start new-feature # 开发新功能
git flow feature finish new-feature

Créer et terminer des branches de publication:

git flow release start v1.0.0 # 测试和修复
git flow release finish v1.0.0

Créer et terminer des branches de correction:

git flow hotfix start hotfix-1.0.1. # 修复紧急问题
git flow hotfix finish hotfix-1.0.1

Avantages et inconvénients

Avantages

  • Modèle de branches clair: Des règles claires de nommage et d'utilisation des branches rendent le processus de développement bien organisé.
  • Isoler le développement et la publication: La séparation des processus de développement et de publication réduit l'impact de l'incertitude du développement sur les publications.
  • Gestion des versions: Chaque publication et correction est marquée par un libellé de version, ce qui facilite le suivi et la gestion.

Inconvénients

  • Complexité: Pour les petites équipes ou les projets simples, le modèle de branches de Git Flow peut sembler trop complexe.
  • Fusions fréquentes: Dans les grandes équipes, la fusion fréquente de branches peut entraîner une augmentation des conflits de fusion.

Git Flow est un modèle structuré de gestion de branches qui aide les équipes à mieux gérer le processus de développement et de publication de logiciels en définissant des branches et des flux de travail clairs. Bien qu'il ajoute une certaine complexité, Git Flow offre un soutien solide et des capacités de gestion pour les grands projets et la collaboration en équipe.

autres extensions