7

Branches et travail en parallèle

🎯 Objectifs de ce chapitre

À la fin de ce chapitre, tu seras capable de :

Pourquoi les branches ?

Les branches te permettent de travailler sur plusieurs choses en même temps sans tout casser. C'est comme avoir plusieurs versions de ton projet qui coexistent !

🌿 Comprendre le concept de branches

Analogie : L'arbre généalogique de ton code

Imagine que chaque commit est une personne dans un arbre généalogique. Les branches sont différentes lignées familiales qui partagent des ancêtres communs mais évoluent séparément.

Visualisation des branches

Commit initial
main
Ajout README
🌿 Création branche "feature"
feature
Fix bug urgent (main)
Nouvelle fonctionnalité (feature)
🔀 Fusion dans main

Branche principale (main/master)

C'est la branche par défaut, celle qui contient la version stable de ton projet. On ne travaille généralement pas directement dessus.

Branches de fonctionnalité (feature branches)

Branches temporaires pour développer de nouvelles fonctionnalités, réparer des bugs, ou expérimenter.

Nommage des branches

Utilise des noms descriptifs :
feature/ajout-panier
fix/correction-bug-login
docs/amelioration-readme

Avantages des branches

  • 🚀 Développement parallèle : Plusieurs personnes peuvent travailler en même temps
  • 🛡️ Sécurité : La branche main reste toujours stable
  • 🧪 Expérimentation : Teste des idées sans risque
  • 🔧 Isolation : Chaque fonctionnalité est développée séparément

🛠️ Manipulation des branches

Maintenant, voyons comment créer et gérer les branches en pratique.

📋 Voir les branches

git branch

Affiche toutes les branches locales. L'astérisque (*) indique la branche active.

🌿 Créer une branche

git branch nouvelle-fonctionnalite

Crée une nouvelle branche à partir de la position actuelle.

🔀 Changer de branche

git checkout nouvelle-fonctionnalite

Se déplace vers la branche spécifiée.

⚡ Créer et changer

git checkout -b nouvelle-fonctionnalite

Crée une nouvelle branche ET se déplace dessus (très pratique !).

Pratique guidée : Crée ta première branche

Dans ton projet, assure-toi d'être sur la branche main :

git status

Tu devrais voir "Sur la branche main".

Crée une branche pour une nouvelle fonctionnalité

git checkout -b ajout-fonctionnalite
Explication : Cette commande crée la branche "ajout-fonctionnalite" et bascule immédiatement dessus.

Vérifie que tu as changé de branche :

git status

Tu devrais voir "Sur la branche ajout-fonctionnalite".

Travaille sur ta nouvelle branche

Crée un nouveau fichier ou modifie un existant :

echo "# Nouvelle fonctionnalité" > fonctionnalite.md
git add fonctionnalite.md
git commit -m "Ajoute le squelette de la nouvelle fonctionnalité"

Retourne sur main

Pour voir que main n'a pas changé :

git checkout main

Le fichier fonctionnalite.md a disparu ! (Il est safe dans ta branche)

git switch - alternative moderne

Git a introduit git switch qui est plus intuitive :

git switch main                    # Change de branche
git switch -c nouvelle-branche    # Crée et change

🔀 Fusionner des branches (merge)

Une fois ton travail terminé sur une branche, il faut la fusionner dans main.

1

Retourne sur main

git switch main

Assure-toi d'être sur la branche qui va recevoir les changements.

2

Récupère les derniers changements

git pull

Assure-toi d'avoir la dernière version de main.

3

Fusionne la branche

git merge ajout-fonctionnalite

Intègre les changements de ta branche dans main.

4

Pousse les changements

git push

Envoie la version fusionnée sur GitHub.

Types de fusion

Git utilise différents types de fusion selon la situation :

Fast-forward (avance rapide)

Si main n'a pas bougé pendant que tu travaillais sur ta branche, Git peut simplement "avancer" le pointeur main. C'est le cas idéal !

Merge commit (commit de fusion)

Si main a évolué, Git crée un commit spécial qui combine les changements des deux branches.

Supprime la branche fusionnée

Une fois fusionnée, tu peux supprimer la branche :

git branch -d ajout-fonctionnalite

Nettoyage

Supprime les branches fusionnées pour garder ton dépôt propre. Tu peux toujours recréer une branche si besoin !

🚨 Gestion des conflits

Les conflits arrivent quand Git ne peut pas fusionner automatiquement.

Quand les conflits surviennent-ils ?

Quand la même partie d'un fichier a été modifiée différemment sur deux branches que tu essayes de fusionner.

Reconnaître un conflit

Quand tu fais git merge et qu'il y a conflit, Git s'arrête et affiche :

CONFLIT (contenu): Conflit de fusion dans monfichier.txt
Échec de la fusion automatique ; résolvez les conflits puis validez le résultat.

Identifier les conflits

Ouvre le fichier en conflit. Tu verras des marqueurs :

<<<<<<< HEAD
Ceci est le contenu de la branche actuelle (main)
=======
Ceci est le contenu de la branche que tu fusionnes
>>>>>>> ajout-fonctionnalite

Résoudre le conflit

Édite le fichier pour garder la version que tu veux :

Ceci est la version finale que je veux garder

Supprime tous les marqueurs de conflit (<<<<<<, =======, >>>>>>).

Finaliser la fusion

Une fois tous les conflits résolus :

git add monfichier.txt
git commit -m "Résolution du conflit de fusion"

Git crée le commit de fusion.

Outils de résolution de conflits

Les éditeurs modernes (VSCode, GitHub Desktop) ont des outils visuels pour résoudre les conflits plus facilement.

🎯 Workflow de branches recommandé

Workflow simple pour débutant

  1. Commence sur main : git switch main et git pull
  2. Crée une branche : git switch -c ma-fonctionnalite
  3. Travaille : Fais tes commits normalement
  4. Retourne sur main : git switch main et git pull
  5. Fusionne : git merge ma-fonctionnalite
  6. Pousse : git push
  7. Nettoie : git branch -d ma-fonctionnalite

Bonnes pratiques

  • 🎯 Une branche = une fonctionnalité
  • 📝 Branches courtes (quelques jours max)
  • 🔄 Main à jour : Toujours fusionner depuis une main à jour
  • 🧹 Nettoyer : Supprimer les branches fusionnées

✅ Résumé du chapitre

Ce que tu as accompli

  • Compris le concept de branches et leur utilité
  • Créé et navigué entre les branches
  • Travaillé en parallèle sur différentes fonctionnalités
  • Fusionné des branches avec git merge
  • Compris les conflits et comment les résoudre
  • Appris un workflow de branches efficace

Félicitations ! Tu maîtrises maintenant un des concepts les plus puissants de Git. Dans le prochain chapitre, nous verrons comment utiliser les Pull Requests sur GitHub pour une collaboration professionnelle.

Pour t'entraîner

Crée plusieurs branches pour différentes petites fonctionnalités et pratique les fusions. Plus tu pratiques, plus les branches deviendront naturelles !