Un pull request flow est un flux de travail léger en 6 étapes basé sur une branche. Remarque: ce guide utilise des citations de GitHub Guides (Open Source).

Git - branch and merge - fusion - workflow
Voici un aperçu de ce workflow:
0. "Pull" prendre les dernieres modifications (obtenir la base de code la plus récente en locale)
1. Créer une "branche" (version)
2. Commit les changements
3. Ouvrir une "pull request" (proposer les changements)
4. Discussions et révisions du code
5. Rebaser et tester
6. Merge (Fusion) dans la branche master
Git - Créer une branche (version)

Branches

La branche master est la branche par défaut quand nous créons un dépôt. Utiliser les autres branches pour le développement et fusionner ensuite à la branche principale quand c'est fini.

Créer une nouvelle branche nommée "feature_x" et passer dessus pour l'utiliser
git checkout -b feature_x
une branche n'est pas disponible pour les autres tant que nous ne l'avons pas envoyée vers le dépôt distant
git push origin <branch>

Remarque: Git est livré avec des outils GUI intégrés pour explorer les branches - gitk . Nous recommandons de l'utiliser afin d'avoir un bon aperçu de l'organisation. Il suffit de le lancer dans le terminal:
gitk
Tip : Il n'y a qu'une seule règle: tout ce qui se trouve dans la branche master est toujours déployable (valide).

Pour cette raison, il est extrêmement important de travailler sur une branche différente de 'master' pour mettre au point une fonctionnalité ou un correctif. Le nom de la branch doit être descriptif (e.g., refactor-authentication, build-maze-visualizer, use-embedded-format).

Les commits permettent de suivre les modifications pendant que nous travaillons. Les commits créent également un historique transparent de notre travail que les autres peuvent aussi suivre afin comprendre ce qui a été fait et pourquoi. Chaque commit a un message associé, c'est une description expliquant pourquoi une modification particulière a été effectuée.

En outre, chaque validation est considérée comme une unité accessible. Cela nous permet d'annuler les modifications si un bogue est détecté ou de créer de nouvelles versions à partir d'un point particulier.

Git - create a branch

Ajouter & Valider

Nous pouvons proposer un changement (l'ajouter à l'Index) en exécutant les commandes
git add <filename>
git add *
Pour valider ces changements, utiliser
git commit -m "Commit message"

Nous recommandons d'utiliser une interface graphique pour gérer les commit, cela nous donne un meilleur aperçu de ce que nous voulons enregistrer.

  $ git gui // (git-gui)
Tip : Les messages de validation sont importants, ils décrivent l'historique des changements. Ecrire des messages de validation clairs facilite le suivi du code.

Git workflow - pull request

La Pull Request initie une discussion autours des commits réalisés. Tout le monde peut voir exactement quelles modifications seraient fusionnées en acceptant cette demande.

Nous pouvons ouvrir une demande à tout moment:
lorsque que nous souhaitons partager des captures d'écran ou des idées générales,
lorsque nous sommes bloqué et/ou avons besoin d'aide ou de conseils,
ou lorsque nous sommes prêt pour une révision du travail.

Tip : Les Pull Requests sont utiles pour contribuer à des projets open source et pour gérer les modifications apportées aux projets partagés.

Git - Discussions et révisions du code

Une fois qu'une pull request a été ouverte, la personne ou l'équipe qui examine les modifications peut avoir des questions ou des commentaires (le plus souvent via une plateforme hôte). Peut-être que le style de codage ne correspond pas aux directives du projet, que les changements manquent de tests unitaires, ou encore que tout est en ordre. Les pull request sont conçues pour encourager et sauvegarder ces conversations.

Nous pouvons toujours continuer à faire des commits et engager des discussions. Si quelqu'un commente qu'il y a un bogue dans le code, nous pouvons le corriger dans notre branche et pousser la modification dans la revue.


Git - Rebaser et tester le code en production

Une fois que la pull request et les tests ont été validés, nous pouvons rebaser notre branche sur master (elle utilisera la version la plus récente du code) afin de tester toutes les modifications ensemble (production).

Rebase

Pour prendre toutes les modifications qui ont été validées sur master et les rejouer sur la branche actuelle.
git rebase master
Cette opération fonctionne en réinitialisant la branche en cours sur le même commit que la branche master, puis applique chaque commit de notre branche.

Si notre branche cause des problèmes ou que les tests ne passent pas, nous devons la corriger avant de fusionner avec master.

Git - merge - fusion - to master no fast forward

Merge

Maintenant que nos modifications ont été vérifiées en 'production', il est temps de fusionner le code dans la branche principale.
git checkout master
git merge <branch> --no-ff


--no-ff | No Fast Forward

L'option --no-ff est utile lorsque nous souhaitons avoir une idée claire des commits de notre branche une fois la fusion effectuée. Cela traite une branche de fonctionnalité avec des commits comme une seule unité, et les fusionner en une seule unité. La branche ressort ainsi clairement de notre historique avec l'option --no-ff.


Git - merge to master no fast forward

Tag & Version

Tag & Version

Il est recommandé de créer des balises pour les versions logicielles. Nous pouvons créer un nouveau tag nommé Hurna v1.3.0 en executant
git tag -a v1.3.0 -m "Hurna v1.3.0"

Cela permet de suivre facilement les versions et de les restaurer si nécessaire.