Cours

Git & GitHub Leçon 4

Les branches

Travailler sur une nouvelle fonctionnalité à part, puis la fusionner, et gérer un conflit.

25 min

À la fin de cette leçon, tu sauras

  • Créer une branche et passer de l'une à l'autre
  • Fusionner une branche avec git merge
  • Résoudre un conflit simple

Pourquoi des branches ?

Une branche est une ligne de développement parallèle. Tu veux ajouter un formulaire de contact sans risquer de casser le site qui marche ? Tu crées une branche, tu travailles dessus tranquillement, et tu la fusionnes dans main seulement quand tout fonctionne.

git branch                       # liste les branches (* = celle où tu es)
git switch -c formulaire         # crée la branche « formulaire » et s'y place
# … tu modifies, tu fais des commits …
git switch main                  # revient sur main

Quand tu changes de branche, Git met à jour tes fichiers pour qu'ils correspondent à cette branche. Les commits d'une branche n'apparaissent pas dans les autres tant qu'on ne les a pas fusionnés.

Fusionner

git switch main
git merge formulaire
git branch -d formulaire         # supprime la branche, devenue inutile

On se place sur la branche qui doit recevoir les modifications, ici main, puis on fusionne.

Les conflits

Si la même ligne a été modifiée différemment dans les deux branches, Git ne peut pas choisir à ta place : c'est un conflit. Il marque l'endroit dans le fichier :

<<<<<<< HEAD
<h1>Bienvenue sur mon site</h1>
=======
<h1>Bonjour et bienvenue</h1>
>>>>>>> formulaire

Tu gardes la bonne version (ou un mélange des deux), tu supprimes les lignes <<<<<<<, ======= et >>>>>>>, puis tu termines avec git add et git commit.

Astuce : dans les anciens tutoriels, tu verras git checkout -b au lieu de git switch -c. Les deux marchent, switch est plus récent et plus clair.

À toi de jouer

Tape dans le terminal les commandes pour :

  1. créer une branche mode-sombre et t'y placer ;
  2. préparer tous les fichiers modifiés et faire un commit ;
  3. revenir sur main ;
  4. fusionner mode-sombre dans main.
eleve@cours: ~
  • La branche mode-sombre est créée et activée
  • Les fichiers sont préparés et commités
  • Retour sur main
  • mode-sombre est fusionnée
  • La fusion se fait depuis main
Bloqué ? Voir une solution
git switch -c mode-sombre
git add .
git commit -m "Ajoute le mode sombre"
git switch main
git merge mode-sombre

Quiz

1Pour fusionner formulaire dans main, sur quelle branche dois-tu être ?
2Quand y a-t-il un conflit ?
3Que fait git switch -c test ?