L'Arbre des Possibles
Branches, switch et timelines parallèles
Introduction
Le Maître Archiviste te convoque dans une salle que tu n'avais jamais vue auparavant. Au centre, un immense arbre de cristal s'élève du sol au plafond. Ses branches translucides pulsent d'une lumière douce, et chacune semble contenir des images mouvantes - des fragments d'histoires différentes, des futurs parallèles du royaume.
« Apprenti, jusqu'à présent, tu as travaillé sur une seule ligne du temps - une chronique unique, linéaire, où chaque événement suit le précédent. Mais les grands Archivistes savent quelque chose que les novices ignorent : l'histoire n'a pas qu'un seul chemin possible. Regarde cet arbre. Chaque branche représente une timeline parallèle - un futur possible pour le royaume. On peut explorer ces branches, y consigner des événements, et décider plus tard laquelle deviendra la chronique officielle. C'est le pouvoir des branches Git. »
Qu'est-ce qu'une branche ?
Jusqu'ici, tous tes commits se sont enchaînés sur une seule branche : main (anciennement "master"). C'est la chronique officielle - la timeline principale du projet.
Pourquoi utiliser des branches ?
- Expérimenter sans risque : tu testes une idée sur une branche. Si ça marche, tu la gardes. Sinon, tu la supprimes.
- Travailler en parallèle : pendant qu'un collègue travaille sur une fonctionnalité, tu travailles sur une autre, chacun sur sa branche.
- Garder
mainpropre : la branche principale ne contient que du code validé et testé.
Voir les branches existantes
Pour lister toutes les branches de ton dépôt :
git branch La branche courante est marquée d'une étoile * et apparaît en vert :
* main Pour l'instant, tu n'as qu'une seule branche. Ça va changer.
Créer une nouvelle branche
Pour créer une branche sans y basculer :
git branch <nom> Exemple :
git branch expedition-nord Cela crée une branche expedition-nord qui pointe vers le même commit que ta branche actuelle. Mais tu es toujours sur main - tu n'as pas changé de timeline.
Vérifie :
git branch expedition-nord
* main L'étoile est toujours sur main.
Basculer sur une branche
La commande moderne : git switch
git switch expedition-nord C'est la méthode recommandée depuis Git 2.23. Simple, claire, sans ambiguïté.
L'ancienne méthode : git checkout
git checkout expedition-nord Tu verras git checkout dans beaucoup de tutoriels et de projets existants. Ça fonctionne, mais git switch est plus explicite car git checkout fait aussi d'autres choses (restaurer des fichiers, par exemple).
Utilise git switch pour changer de branche. C'est plus clair et ça évite les erreurs.
Créer et basculer en une seule commande
Tu peux combiner la création et le basculement :
git switch -c nouvelle-branche Ou avec l'ancienne syntaxe :
git checkout -b nouvelle-branche HEAD - Le marqueur de position
HEAD est un pointeur spécial qui indique où tu te trouves dans l'historique. Plus précisément, HEAD pointe vers la branche courante, qui elle-même pointe vers un commit.
HEAD -> main -> commit C3
expedition-nord -> commit C3 Quand tu fais git switch expedition-nord :
main -> commit C3
HEAD -> expedition-nord -> commit C3 Et quand tu fais un nouveau commit sur expedition-nord :
main -> commit C3
HEAD -> expedition-nord -> commit C4 Supprimer une branche
Suppression sécurisée
git branch -d nom-de-la-branche L'option -d (minuscule) supprime la branche uniquement si elle a été fusionnée. C'est une sécurité : Git refuse de supprimer une branche qui contient du travail non intégré.
Suppression forcée
git branch -D nom-de-la-branche L'option -D (majuscule) supprime la branche même si elle n'a pas été fusionnée. À utiliser avec précaution - le travail non fusionné sera perdu (enfin, pas vraiment perdu, mais beaucoup plus difficile à retrouver).
Tu ne peux pas supprimer la branche sur laquelle tu te trouves. Bascule d'abord sur une autre branche.
Exercice pratique - Les Chroniques parallèles
Le royaume fait face à un dilemme. Deux expéditions doivent être documentées : une vers le Nord, dans les Montagnes de Givre, et une vers le Sud, dans la Forêt d'Émeraude. Chaque expédition mérite sa propre chronique, sa propre timeline. À toi de les créer, Archiviste.
Étape 1 - Créer le dépôt
Crée un nouveau dossier et initialise un dépôt Git :
mkdir chroniques-paralleles
cd chroniques-paralleles
git init -b main Étape 2 - Premier commit sur main
Crée un fichier de base et fais ton premier commit :
echo "# Chroniques du Royaume" > chroniques.md
git add chroniques.md
git commit -m "Créer le registre des chroniques du royaume" Étape 3 - Créer la branche expedition-nord
git branch expedition-nord Étape 4 - Basculer sur expedition-nord
git switch expedition-nord Vérifie que tu es bien sur la bonne branche :
git branch Tu devrais voir l'étoile sur expedition-nord.
Étape 5 - Commiter sur expedition-nord
Crée un fichier et commite-le :
echo "Jour 1 : L'expédition quitte la cité vers les Montagnes de Givre." > nord.md
git add nord.md
git commit -m "Ajouter le journal de l'expédition nord" Étape 6 - Revenir sur main
git switch main Remarque : le fichier nord.md a disparu de ton dossier ! Il n'existe que sur la branche expedition-nord. Pas de panique, il est en sécurité dans cette timeline.
Étape 7 - Créer et basculer sur expedition-sud
Cette fois, combine les deux en une seule commande :
git switch -c expedition-sud Étape 8 - Commiter sur expedition-sud
echo "Jour 1 : L'expédition s'enfonce dans la Forêt d'Émeraude." > sud.md
git add sud.md
git commit -m "Ajouter le journal de l'expédition sud" Étape 9 - Lister toutes les branches
git branch Tu devrais voir trois branches : expedition-nord, expedition-sud (avec l'étoile), et main.
Étape 10 - Vérifier
Lance le script de vérification pour valider ta quête :
Bash (Linux / macOS / Git Bash sur Windows) :
bash verifier.sh PowerShell (Windows) :
.\verifier.ps1 Le script vérifie :
- Tu es dans un dépôt Git
- La branche
expedition-nordexiste - La branche
expedition-sudexiste - La branche
expedition-nordcontient au moins un commit propre - La branche
expedition-sudcontient au moins un commit propre - Il y a au moins 3 branches au total
- Tu es de retour sur la branche
main
Récapitulatif des commandes
| Commande | Description |
|---|---|
git branch | Lister les branches |
git branch <nom> | Créer une branche |
git switch <nom> | Basculer sur une branche |
git checkout <nom> | Basculer sur une branche (ancienne syntaxe) |
git switch -c <nom> | Créer une branche et basculer dessus |
git checkout -b <nom> | Créer et basculer (ancienne syntaxe) |
git branch -d <nom> | Supprimer une branche (sécurisé) |
git branch -D <nom> | Supprimer une branche (forcé) |
Tu contemples l'Arbre des Possibles. Trois branches brillent désormais d'un éclat distinct - trois timelines parallèles, chacune racontant une histoire différente. Le Maître Archiviste pose sa main sur ton épaule.