Skip to content

Les Branches avec Git

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.

mainfeature-loginC0C1C2Correction typoF1Interface LoginF2API Login

  • 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

bash
# Cliquez sur les commandes à gauche pour les exécuter dans le simulateur
hashcode-academy:~$ _

  • Lister les branches locales : git branch
  • Créer une branche : git branch <nom-de-branche>
  • Basculer sur une branche : git switch <nom-de-branche> (ou git checkout <nom-de-branche>)
  • Créer et basculer : git switch -c <nom-de-branche> (ou git checkout -b <nom-de-branche>)

Entraînez-vous à retenir les concepts clés en cliquant sur les cartes ci-dessous :

Question

Qu'est-ce qu'une branche dans Git ?

Cliquer pour révéler la réponse
Réponse

Une 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 question
Question

Quelle commande permet de basculer d'une branche à une autre ?

Cliquer pour révéler la réponse
Réponse

git switch <nom-de-branche> (ou git checkout <nom-de-branche>)

Cliquer pour voir la question
Question

Quelles sont les conventions de nommage pour une branche de fonctionnalité ?

Cliquer pour révéler la réponse
Réponse

On utilise le préfixe feature/ suivi du nom de la fonctionnalité, par exemple feature/login ou feature/dashboard.

Cliquer pour voir la question
Question

Quel est l'avantage principal d'utiliser des branches de fonctionnalités ?

Cliquer pour révéler la réponse
Réponse

L'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 question

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 ?


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 :

  1. 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 »

  2. Branch — Une nouvelle branche est créée à partir de main pour isoler le travail.
    Exemple : feature/login

  3. Commit — Le développeur réalise des commits réguliers avec des messages clairs et conventionnels.

  4. Push — Les commits sont envoyés vers le dépôt distant (GitHub, GitLab, etc.).

  5. Pull Request — Une demande de fusion est ouverte pour que l’équipe examine les changements.

  6. Review — Les collègues vérifient le code : qualité, sécurité, tests, architecture.

  7. Merge — Une fois approuvée, la Pull Request est fusionnée dans main.

  • 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émain reste stable tant que les changements n’ont pas été validés.

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.

main

Règle d’or : Ne jamais développer directement sur main. Toute modification doit passer par une Pull Request.

Branches de développement pour de nouvelles fonctionnalités.

feature/login
feature/dashboard
feature/profile
feature/payment

Quand l’utiliser ? Dès que vous commencez à travailler sur une nouvelle fonctionnalité. La branche est supprimée après fusion.

Corrections urgentes à appliquer directement sur la version de production.

hotfix/login-bug
hotfix/security-patch

Quand l’utiliser ? Un bug critique est découvert en production et doit être corrigé immédiatement, sans attendre le cycle de release.

Préparation d’une nouvelle version du projet.

release/v1.0.0
release/v2.0.0

Quand l’utiliser ? Avant de déployer une nouvelle version, pour stabiliser le code, mettre à jour la documentation et les versions.

main
├── feature/login
├── feature/dashboard
├── hotfix/security
└── release/v1.0.0

Un commit doit expliquer clairement ce qui a changé et pourquoi. Les conventions de messages de commit rendent l’historique lisible et professionnel.

git commit -m "modification"
git commit -m "test"
git commit -m "fix"

Ces messages ne donnent aucune information utile sur le changement effectué.

git commit -m "feat: add login page"
git commit -m "fix: resolve login redirect loop"
PréfixeUsageExemple
feat:Nouvelle fonctionnalitéfeat: add dashboard
fix:Correction de bugfix: resolve login issue
docs:Documentationdocs: update README
refactor:Amélioration du code sans changement fonctionnelrefactor: simplify auth service
security:Correction de sécuritésecurity: sanitize user inputs
chore:Maintenance (dépendances, config)chore: update dependencies
  • 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.

Mettez en pratique tout ce que vous avez appris avec cette série d’exercices.

Commandes à exécuter

bash
# Cliquez sur les commandes à gauche pour les exécuter dans le simulateur
hashcode-academy:~$ _

Commandes à exécuter

bash
# Cliquez sur les commandes à gauche pour les exécuter dans le simulateur
hashcode-academy:~$ _

Commandes à exécuter

bash
# Cliquez sur les commandes à gauche pour les exécuter dans le simulateur
hashcode-academy:~$ _

Commandes à exécuter

bash
# Cliquez sur les commandes à gauche pour les exécuter dans le simulateur
hashcode-academy:~$ _

Commandes à exécuter

bash
# Cliquez sur les commandes à gauche pour les exécuter dans le simulateur
hashcode-academy:~$ _

Commandes à exécuter

bash
# Cliquez sur les commandes à gauche pour les exécuter dans le simulateur
hashcode-academy:~$ _

Pourquoi ? Parce que chaque branche possède son propre espace de travail. Le fichier login.html n’existe que sur feature/login.

Commandes à exécuter

bash
# Cliquez sur les commandes à gauche pour les exécuter dans le simulateur
hashcode-academy:~$ _

Commandes à exécuter

bash
# Cliquez sur les commandes à gauche pour les exécuter dans le simulateur
hashcode-academy:~$ _

Imaginez trois développeurs travaillant simultanément :

  • Développeur Afeature/login
  • Développeur Bfeature/dashboard
  • Développeur Cfeature/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.

Créez la structure suivante :

main
├── feature/homepage
├── feature/contact
└── feature/profile

Objectifs :

  1. Créer trois branches à partir de main
  2. Ajouter un fichier différent sur chaque branche (homepage.html, contact.html, profile.html)
  3. Réaliser plusieurs commits sur chaque branche
  4. Revenir sur main et fusionner chaque branche
  5. Consulter l’historique avec git log --oneline --graph --all

  1. Pourquoi ne faut-il pas développer directement sur main ?
  2. Pourquoi les branches facilitent-elles la collaboration ?
  3. Pourquoi les conventions de commits sont-elles importantes ?
  4. Que se passerait-il si cinquante développeurs travaillaient directement sur main ?
  5. Pourquoi les Pull Requests existent-elles ?

  • 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.


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