Tester de nouveaux prix sans toucher aux anciens
Une branche Git est une ligne de commits à part : on y essaie un changement sans toucher à la version qui marche. Elle permet d’essayer une idée, ou de travailler à plusieurs, sans rien casser.
La cafétéria d’une association prépare ses prix de la rentrée. L’ancien tarif reste affiché tant que les nouveaux ne sont pas décidés.
À la fin de cette leçon
Remarque
Je peux travailler sur une branche et passer d’une branche à l’autre.
Mots-clés
| Mot | Ce que ça veut dire | Exemple |
|---|---|---|
| Branche | une ligne de commits qui avance à part | nouveaux-prix |
| main | le nom habituel de la branche principale | |
| HEAD | le repère qui dit sur quelle branche vous êtes | |
| Parent | le commit qui vient juste avant un autre | |
| Pointe | le dernier commit d’une branche | |
| Graphe | le dessin des commits reliés à leurs parents |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Une branche est une étiquette sur un commit
Une branche est un nom qui désigne un commit. Quand vous faites un commit, le nom avance avec vous. Les autres branches restent où elles étaient.
La branche principale s’appelle souvent main. Le repère HEAD dit sur quelle branche vous êtes. Chaque commit connaît son parent, le commit juste avant lui.
Comment lire ce dessin
Chaque flèche va d’un commit vers son parent. Ici, le commit 2 a pour parent le commit 1.
La branche main désigne le commit 1. La branche nouveaux-prix désigne le commit 2, et HEAD indique que vous êtes dessus. Les deux branches partagent le commit 1.
Créer le dépôt dans le dossier cafe
git init -b main cafeAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Écrire l’ancien tarif
printf 'cafe 1.20\nthe 1.50\n' > cafe/prix.txtAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Choisir le fichier pour le commit
git -C cafe add prix.txtAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Enregistrer le tarif de la rentrée
git -C cafe commit -m "Prix de la rentree"Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Lister les branches
git -C cafe branchAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
git switch change de branche et de fichiers
git switch -c nom crée une branche et vous y place. Sans -c, git switch nom va sur une branche qui existe déjà.
Changer de branche change aussi le dossier : Git y remet les fichiers de la branche où vous arrivez. Vous allez voir le fichier prix.txt changer de contenu.
Créer la branche nouveaux-prix
git -C cafe switch -c nouveaux-prixAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Écrire les nouveaux prix
printf 'cafe 1.30\nthe 1.60\n' > cafe/prix.txtAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Enregistrer les nouveaux prix
git -C cafe commit -am "Augmenter les prix"Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Revenir sur la branche main
git -C cafe switch mainAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Lire le fichier sur main
cat cafe/prix.txtAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Comparer deux branches avec git log
git log nom liste les commits de cette branche, de la pointe jusqu’au premier commit.
Deux points entre deux noms posent une question : main..nouveaux-prix donne les commits de nouveaux-prix que main n’a pas. C’est le travail qui reste à fusionner.
Lire l’historique de nouveaux-prix
git -C cafe --no-pager log --format=%s nouveaux-prixAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Compter les commits en plus
git -C cafe rev-list --count main..nouveaux-prixAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Une erreur fréquente
Attention
On croit souvent qu’une branche est une copie du dossier. Ce n’est pas vrai : une branche est un simple nom posé sur un commit. Créer une branche ne copie aucun fichier, et c’est pourquoi cela prend un instant.