Aller au contenu

Maitriser le Git flow

cover

Tout développeur utilise ou utilisera Git à un moment donné de sa carrière. La plupart du temps, ils devront travailler avec d'autres personnes sur le même dépôt Git. Pour éviter que ce soit un champ de bataille de branche et commit, voici un guide simple sur la façon de contribuer correctement sur un dépôt Git.

Bases

Tout d'abord, le dépôt Git devrait avoir une branche par défaut souvent appelée master ou main (cela peut être n'importe quoi d'autre tant que tout le monde s'accorde sur le nom).

Ensuite, une deuxième branche utilisée à des fins de développement. Celle-ci suivra de très près la branche par défaut. Elle sera un réceptacle pour tout nouveau développement. Cette branche est la seule autorisée à être fusionnée sur la branche par défaut.

Enfin, toutes les autres branches entrent dans la dernière catégorie. Ce sont des fonctionnalités, des corrections de bogues et autres.

Remarque : Seules les branches HotFix sont autorisées à contourner la branche de développement.

Voici un exemple de dépôt Git simple

example-git-repository-graph

Exemple complet d'un cycle de vie de d'un dépôt

Initialisation d'un dépôt

La première chose à faire lors de la création d'un nouveau référentiel est d'initialiser la structure de base.

Créez le dépôt Git :

mkdir -p myrepository

cd myrepository

git init

Vous voudrez peut-être créer vos premiers fichiers. Comme le README.md/.gitignore et certains fichiers de package comme package.json ou pom.xml.

Créez ensuite le commit initial du dépôt avec ces fichiers :

git add .
git commit -m "Initial commit"
git tag v0.0.0

Créez enfin la branche de développement :

git branch develop

Le référentiel devrait ressembler à :

init-git-repository-graph

Initialisation de la branche de développement

Maintenant que vous avez notre structure de base sur le dépôt Git, il est temps d'initialiser la branche de développement.

Créer en premier la branche développement :

git checkout develop

Parfois, vous voudrez peut-être ajouter un commit initial sur la branche de développement avec la modification de la version actuelle dans votre fichier de package package.json, pom.xml ou autre.

Editez ces fichiers puis créez un commit :

git add .
git commit -m "Prepare development version"

Le dépôt devrait ressembler à :

init-develop-git-repository-graph

Ajouter la première fonctionnalité

Créons maintenant la première fonctionnalité de notre application.

Vérifiez que vous êtes bien sur la branche développement :

git branch

Résultat :

* develop
  master

Si ce n'est pas le cas, changer pour la branche de développement.

Ensuite, créer une branche de fonctionnalité :

git checkout -b feature/my-first-feature

Maintenant, écrivez la fonctionnalité et commitez de temps en temps avec :

git add .
git commit -m "save dev"

Le dépôt devrait ressembler à :

feature-branch-git-repository-graph

Travailler sur une fonctionnalité requise

Vous travailliez sur la première fonctionnalité mais vous réalisez que vous en aviez besoin d'une autre pour continuer.

/!\ Assurez-vous que vous n'avez pas de modifications non commités avant de changer de branche

Reproduisez les mêmes commandes que pour la première fonctionnalité : - Checkout sur la branche développement - Ensuite, création d'une branche de fonctionnalité - Écrivez votre code et créez des commits

git checkout develop
git checkout -b feature/my-required-feature

Le dépôt devrait ressembler à :

feature2-branch-git-repository-graph

Fusionner la fonctionnalité requise

Maintenant que vous avez terminé votre travail sur la fonctionnalité requise, il est temps de fusionner le code avec la branche de développement.

Vous devez d'abord rebaser la branche pour supprimer tous les commits inutiles :

git rebase -i develop

Le premier commit doit toujours être sélectionné. Tous les autres commits peuvent être écrasés.

pick fa71872 save dev
squash 5d9a97a save dev

Le dépôt devrait ressembler à :

feature2-rebase-git-repository-graph

Passez à la branche de développement et fusionnez la branche de fonctionnalité requise :

git checkout develop
git merge --no-ff feature/my-required-feature

Le dépôt devrait ressembler à :

feature2-merge-git-repository-graph

Poursuivre le travail sur la première fonctionnalité

Maintenant que vous avez terminé la fonctionnalité requise, vous souhaitez rebaser votre travail actuel sur la première fonctionnalité pour récupérer le contenu de la fonctionnalité requise.

  • Changement pour la branche de fonctionnalités
  • La rebaser sur la branche de développement
git checkout feature/my-first-feature
git rebase develop

Ce que fait cette commande, c'est prendre tous les commits de la branche de fonctionnalité et les appliquer à la fin de la branche de développement.

Le dépôt devrait ressembler à :

feature-rebase-git-repository-graph

Fusion de la première fonctionnalité

Maintenant que vous avez terminé votre travail sur la première fonctionnalité, il est temps de fusionner le code avec la branche de développement.

Vous devez d'abord rebaser la branche pour supprimer tous les commits inutiles :

git rebase -i develop

Le premier commit doit toujours être sélectionné. Tous les autres commits peuvent être écrasés.

pick 717051b save dev
squash 7d39273 save dev
squash 7b700f1 save dev

Le dépôt devrait ressembler à :

feature-rebase2-git-repository-graph

Passez à la branche de développement et fusionnez la branche de fonctionnalité requise :

git checkout develop
git merge --no-ff feature/my-first-feature

Le dépôt devrait ressembler à :

feature-merge-git-repository-graph

Correction d'un problème critique

Un problème critique a été découvert sur l'application de production et vous devez produire rapidement un correctif. Vous n'avez pas le temps de parcourir tout le processus de publication.

  • Changement pour la branche par défaut
  • Créez une nouvelle branche de correctifs et changer pour la branche
  • Faire la correction
  • Fusionner dans la branche par défaut
  • Taguez votre nouvelle version

Le dépôt devrait ressembler à :

hotfix-git-repository-graph

Publier votre travail

Il est maintenant temps de publier tout ce travail acharné.

Vous devez d'abord fusionner la branche par défaut pour récupérer toutes les correctifs.

git checkout develop
git merge --no-ff master

Le dépôt devrait ressembler à :

develop-rebase-git-repository-graph

Et enfin, fusionnez votre développement sur la branche par défaut.

git checkout master
git merge --no-ff develop

Le dépôt devrait ressembler à :

develop-merge-git-repository-graph

Nettoyer

Faisons un peu de nettoyage en supprimant certaines références inutilisées telles que les branches de fonctionnalités et de correctifs.

git branch -D feature/my-first-feature
git branch -D feature/my-required-feature
git branch -D hotfix/correct-critical-issue  

Le référentiel devrait ressembler à :

cleanup-git-repository-graph

Remarques

Tous les graphiques Git ont été générés avec Bit-Booster app