Les Branches avec Git
Qu’est-ce qu’une branche ?
Section titled “Qu’est-ce qu’une branche ?”Dans Git, une branche est simplement un pointeur mobile vers l’un de vos commits. La branche par défaut s’appelle généralement main.
Lorsque vous créez une nouvelle branche, vous dupliquez virtuellement le pointeur actuel pour pouvoir travailler sur une nouvelle fonctionnalité ou un correctif sans perturber le code stable de la branche principale.
Pourquoi utiliser des branches ?
Section titled “Pourquoi utiliser des branches ?”- Isolation : Vous pouvez travailler sur une fonctionnalité complexe pendant plusieurs jours sans casser le code de production sur
main. - Parallélisme : Plusieurs développeurs peuvent travailler sur des fonctionnalités différentes en même temps sur des branches distinctes.
- Sécurité : Si votre idée ou votre test ne fonctionne pas, il vous suffit de supprimer la branche sans aucun impact sur le reste du projet.
Exercice Pratique : Expérimenter l’isolation des branches
Section titled “Exercice Pratique : Expérimenter l’isolation des branches”Suivez les instructions dans le simulateur ci-dessous pour créer une branche, y ajouter un fichier, commiter, puis revenir sur main pour observer la disparition temporaire du fichier :
Commandes à exécuter
Résumé des commandes de navigation
Section titled “Résumé des commandes de navigation”- Lister les branches locales :
git branch - Créer une branche :
git branch <nom-de-branche> - Basculer sur une branche :
git switch <nom-de-branche>(ougit checkout <nom-de-branche>) - Créer et basculer :
git switch -c <nom-de-branche>(ougit checkout -b <nom-de-branche>)
Fiches de révision
Section titled “Fiches de révision”Entraînez-vous à retenir les concepts clés en cliquant sur les cartes ci-dessous :
Qu'est-ce qu'une branche dans Git ?
Cliquer pour révéler la réponseUne branche est un pointeur mobile vers un commit qui permet d'isoler le développement d'une fonctionnalité sans affecter la branche principale.
Cliquer pour voir la questionQuelle commande permet de basculer d'une branche à une autre ?
Cliquer pour révéler la réponsegit switch <nom-de-branche> (ou git checkout <nom-de-branche>)
Cliquer pour voir la questionQuelles sont les conventions de nommage pour une branche de fonctionnalité ?
Cliquer pour révéler la réponseOn utilise le préfixe feature/ suivi du nom de la fonctionnalité, par exemple feature/login ou feature/dashboard.
Cliquer pour voir la questionQuel est l'avantage principal d'utiliser des branches de fonctionnalités ?
Cliquer pour révéler la réponseL'isolation : plusieurs développeurs peuvent travailler simultanément sur des fonctionnalités différentes sans interférer avec le code stable de la branche main.
Cliquer pour voir la questionQuiz Final — Validez vos connaissances
Section titled “Quiz Final — Validez vos connaissances”1. Qu'est-ce qu'une branche dans Git ?
2. Quelle commande crée une nouvelle branche ET bascule dessus ?
3. Que se passe-t-il si vous créez un fichier sur une branche et revenez sur main ?
Prochaine étape
Section titled “Prochaine étape”Vos modifications sur la branche feature-contact sont prêtes. Comment les ramener sur notre branche principale main ? C’est ce que nous allons voir avec la fusion (Merge).
Étape suivante : Fusionner des Branches
Partie 2 — Comment travaillent les équipes modernes
Section titled “Partie 2 — Comment travaillent les équipes modernes”Le workflow professionnel utilisé par les équipes d’ingénierie modernes suit un processus en 7 étapes :
-
Issue — Une tâche ou fonctionnalité est décrite et assignée dans un outil de suivi (GitHub Issues, Jira, etc.).
Exemple : « Ajouter une page de connexion » -
Branch — Une nouvelle branche est créée à partir de
mainpour isoler le travail.
Exemple :feature/login -
Commit — Le développeur réalise des commits réguliers avec des messages clairs et conventionnels.
-
Push — Les commits sont envoyés vers le dépôt distant (GitHub, GitLab, etc.).
-
Pull Request — Une demande de fusion est ouverte pour que l’équipe examine les changements.
-
Review — Les collègues vérifient le code : qualité, sécurité, tests, architecture.
-
Merge — Une fois approuvée, la Pull Request est fusionnée dans
main.
Pourquoi ce workflow est-il puissant ?
Section titled “Pourquoi ce workflow est-il puissant ?”- Collaboration — plusieurs développeurs peuvent travailler simultanément sans conflits majeurs.
- Qualité — la revue de code réduit les bugs et améliore la maintenabilité.
- Traçabilité — chaque modification est liée à une Issue et une Pull Request.
- Sécurité —
mainreste stable tant que les changements n’ont pas été validés.
Partie 3 — Types de branches
Section titled “Partie 3 — Types de branches”Les équipes utilisent généralement plusieurs catégories de branches pour organiser leur travail.
La branche principale du projet. Elle représente la version stable et prête pour la production.
mainRègle d’or : Ne jamais développer directement sur main. Toute modification doit passer par une Pull Request.
feature/*
Section titled “feature/*”Branches de développement pour de nouvelles fonctionnalités.
feature/loginfeature/dashboardfeature/profilefeature/paymentQuand l’utiliser ? Dès que vous commencez à travailler sur une nouvelle fonctionnalité. La branche est supprimée après fusion.
hotfix/*
Section titled “hotfix/*”Corrections urgentes à appliquer directement sur la version de production.
hotfix/login-bughotfix/security-patchQuand l’utiliser ? Un bug critique est découvert en production et doit être corrigé immédiatement, sans attendre le cycle de release.
release/*
Section titled “release/*”Préparation d’une nouvelle version du projet.
release/v1.0.0release/v2.0.0Quand l’utiliser ? Avant de déployer une nouvelle version, pour stabiliser le code, mettre à jour la documentation et les versions.
Exemple complet
Section titled “Exemple complet”main │ ├── feature/login ├── feature/dashboard ├── hotfix/security └── release/v1.0.0Partie 4 — Conventions de commits
Section titled “Partie 4 — Conventions de commits”Un commit doit expliquer clairement ce qui a changé et pourquoi. Les conventions de messages de commit rendent l’historique lisible et professionnel.
Mauvais exemples
Section titled “Mauvais exemples”git commit -m "modification"git commit -m "test"git commit -m "fix"Ces messages ne donnent aucune information utile sur le changement effectué.
Bons exemples
Section titled “Bons exemples”git commit -m "feat: add login page"git commit -m "fix: resolve login redirect loop"Conventions principales
Section titled “Conventions principales”| Préfixe | Usage | Exemple |
|---|---|---|
feat: | Nouvelle fonctionnalité | feat: add dashboard |
fix: | Correction de bug | fix: resolve login issue |
docs: | Documentation | docs: update README |
refactor: | Amélioration du code sans changement fonctionnel | refactor: simplify auth service |
security: | Correction de sécurité | security: sanitize user inputs |
chore: | Maintenance (dépendances, config) | chore: update dependencies |
Pourquoi ces conventions existent-elles ?
Section titled “Pourquoi ces conventions existent-elles ?”- Lisibilité — l’historique des commits devient un journal de bord clair.
- Automatisation — outils de génération de changelog, versioning sémantique.
- Professionnalisme — une base de code bien maintenue reflète une équipe organisée.
Partie 5 — Atelier pratique
Section titled “Partie 5 — Atelier pratique”Mettez en pratique tout ce que vous avez appris avec cette série d’exercices.
Exercice 1 — Créer un projet
Section titled “Exercice 1 — Créer un projet”Commandes à exécuter
Exercice 2 — Premier commit
Section titled “Exercice 2 — Premier commit”Commandes à exécuter
Exercice 3 — Créer une branche
Section titled “Exercice 3 — Créer une branche”Commandes à exécuter
Exercice 4 — Basculer sur une branche
Section titled “Exercice 4 — Basculer sur une branche”Commandes à exécuter
Exercice 5 — Travailler sur une branche
Section titled “Exercice 5 — Travailler sur une branche”Commandes à exécuter
Exercice 6 — Observer l’isolation
Section titled “Exercice 6 — Observer l’isolation”Commandes à exécuter
Pourquoi ? Parce que chaque branche possède son propre espace de travail. Le fichier login.html n’existe que sur feature/login.
Exercice 7 — Fusionner une branche
Section titled “Exercice 7 — Fusionner une branche”Commandes à exécuter
Exercice 8 — Consulter l’historique
Section titled “Exercice 8 — Consulter l’historique”Commandes à exécuter
Simulation d’équipe
Section titled “Simulation d’équipe”Imaginez trois développeurs travaillant simultanément :
- Développeur A —
feature/login - Développeur B —
feature/dashboard - Développeur C —
feature/profile
Chacun crée sa branche, réalise ses commits, puis ouvre une Pull Request. Une fois la review validée, la branche est fusionnée dans main. Le projet progresse sans chaos.
Mini Challenge
Section titled “Mini Challenge”Créez la structure suivante :
main │ ├── feature/homepage ├── feature/contact └── feature/profileObjectifs :
- Créer trois branches à partir de
main - Ajouter un fichier différent sur chaque branche (
homepage.html,contact.html,profile.html) - Réaliser plusieurs commits sur chaque branche
- Revenir sur
mainet fusionner chaque branche - Consulter l’historique avec
git log --oneline --graph --all
Questions de réflexion
Section titled “Questions de réflexion”- Pourquoi ne faut-il pas développer directement sur
main? - Pourquoi les branches facilitent-elles la collaboration ?
- Pourquoi les conventions de commits sont-elles importantes ?
- Que se passerait-il si cinquante développeurs travaillaient directement sur
main? - Pourquoi les Pull Requests existent-elles ?
À retenir
Section titled “À retenir”- Une branche est une ligne de développement indépendante.
- Le workflow moderne : Issue → Branch → Commit → Push → Pull Request → Review → Merge.
- Les branches permettent l’isolation, la sécurité, la collaboration et le développement parallèle.
- Les conventions de commits rendent l’historique propre, maintenable et communicatif.
Vous venez d’apprendre comment travaillent les équipes d’ingénierie modernes.
Prochaine étape
Section titled “Prochaine étape”Si Git permet de collaborer localement avec des branches, comment une équipe distribuée de développeurs peut-elle s’organiser, suivre son travail et coordonner des dizaines de contributions simultanément ?
Étape suivante : GitHub for Engineering Teams