Les Sceaux Magiques
Tags et versionnage sémantique
Le Maître Archiviste te conduit dans la Salle des Sceaux, une chambre circulaire dont les murs sont couverts de parchemins anciens. Chacun porte un sceau de cire à un endroit précis - certains dorés, d'autres écarlates. Tu remarques que ces sceaux ne sont pas placés au hasard : ils marquent les moments les plus importants de l'Histoire du royaume.
« Archiviste, tu sais désormais mettre de côté ton travail, traquer les bugs dans l'Histoire, et cueillir des commits d'une branche à l'autre. Mais il te manque un art essentiel : poser des Sceaux Magiques sur les moments clés de tes chroniques. Un sceau est une marque permanente, un signet que l'on pose sur un instant précis pour pouvoir le retrouver à jamais. La fondation d'une guilde, une grande victoire, la réparation après un siège - chaque événement majeur mérite son sceau. »
Qu'est-ce qu'un tag ?
Un tag dans Git, c'est comme un sceau de cire posé sur un parchemin important. Contrairement aux branches qui bougent à chaque nouveau commit, un tag est fixe - il pointe toujours vers le même commit.
Les tags servent à marquer des moments importants dans l'historique d'un projet :
- La sortie d'une version stable (v1.0.0, v2.0.0)
- Un jalon important du projet (MVP, beta)
- Un point de référence pour revenir facilement à un état connu
Tags légers vs tags annotés
Git propose deux types de tags, comme deux types de sceaux.
Tag léger (lightweight)
Un tag léger est simplement un pointeur vers un commit. Pas de métadonnées supplémentaires - juste un nom associé à un commit.
git tag v0.1.0 C'est comme écrire un numéro au crayon dans la marge d'un parchemin. C'est rapide, mais il n'y a pas d'information supplémentaire.
Tag annoté (annotated)
Un tag annoté contient beaucoup plus d'informations :
- Le nom du tag
- La date de création
- Le nom de l'auteur
- Un message explicatif
git tag -a v1.0.0 -m "Première version stable du royaume" C'est un vrai sceau de cire officiel : il porte la marque de l'Archiviste, la date, et une description de pourquoi ce moment est important.
« Les Sceaux légers sont utiles pour un usage personnel, temporaire. Mais pour tout ce qui compte - les versions officielles, les jalons partagés - utilise toujours un Sceau Annoté. C'est la différence entre une note griffonnée et un décret royal. »
Recommandation : En pratique, utilise toujours des tags annotés pour les versions et jalons. Les tags légers sont réservés aux marque-pages temporaires.
Créer un tag
Tag léger
# Taguer le commit actuel (HEAD)
git tag v0.1.0 Tag annoté (recommandé)
# Taguer le commit actuel avec un message
git tag -a v1.0.0 -m "Première version stable" L'option -a signifie "annotated" et -m permet d'ajouter un message, exactement comme pour git commit -m.
Taguer un commit passé
Tu peux aussi poser un sceau sur un commit ancien. Il suffit de préciser le hash du commit :
# Retrouver le hash du commit à taguer
git log --oneline
# Taguer ce commit
git tag -a v0.1.0 abc1234 -m "Fondation de la guilde" C'est comme retourner dans les archives pour apposer un sceau sur un événement passé que personne n'avait pensé à marquer à l'époque.
Explorer les tags
Lister tous les tags
git tag Affiche la liste de tous les tags, triés par ordre alphabétique.
Filtrer les tags par motif
# Tous les tags qui commencent par "v1."
git tag -l "v1.*"
# Tous les tags qui commencent par "v"
git tag -l "v*" L'option -l (list) accepte un motif avec des caractères joker (*).
Voir les détails d'un tag
git show v1.0.0 Pour un tag annoté, git show affiche :
- L'auteur du tag et la date
- Le message du tag
- Les détails du commit associé (auteur, date, message, diff)
Pour un tag léger, git show affiche uniquement les détails du commit (pas d'information supplémentaire sur le tag lui-même).
« C'est ainsi que l'on distingue un vrai Sceau d'un simple coup de crayon. Le Sceau Annoté porte la signature de son créateur et la raison de son apposition. »
Partager les tags
Par défaut, git push ne pousse pas les tags. Il faut les envoyer explicitement.
Pousser un tag spécifique
git push origin v1.0.0 Pousser tous les tags
git push origin --tags --tags pousse tous les tags locaux. Si tu as des tags temporaires que tu ne veux pas partager, pousse-les un par un.
Supprimer un tag
Supprimer un tag local
git tag -d v0.1.0 Le tag est supprimé localement. Si tu l'avais déjà poussé vers un dépôt distant, il faut aussi le supprimer là-bas :
git push origin --delete v0.1.0 « On ne brise un Sceau qu'avec une bonne raison. Un Sceau posé par erreur peut être retiré, mais un Sceau partagé avec d'autres guildes nécessite plus de travail pour être effacé. »
Le versionnage sémantique
Les tags suivent souvent une convention appelée Semantic Versioning (SemVer). Le format est :
vMAJEUR.MINEUR.CORRECTIF | Partie | Quand l'incrémenter | Exemple |
|---|---|---|
| MAJEUR | Changement incompatible (breaking change) | v1.0.0 vers v2.0.0 |
| MINEUR | Nouvelle fonctionnalité rétrocompatible | v1.0.0 vers v1.1.0 |
| CORRECTIF | Correction de bug rétrocompatible | v1.0.0 vers v1.0.1 |
Exemples concrets
v0.1.0- première version de développement, pas encore stablev1.0.0- première version stable, prête pour la productionv1.0.1- correction d'un bug dans la v1.0.0v1.1.0- ajout d'une fonctionnalité à la v1.0v2.0.0- refonte majeure, pas rétrocompatible
« Le versionnage sémantique, c'est le langage commun des guildes. Quand un Archiviste voit passer v2.0.0, il sait que des changements majeurs ont eu lieu. Quand il voit v1.0.1, il sait que c'est une simple réparation. Les chiffres parlent d'eux-mêmes. »
Quand poser un sceau ?
Voici les moments où tu devrais taguer :
- Release : chaque version livrée aux utilisateurs (v1.0.0, v1.1.0)
- Jalon : chaque étape importante du projet (v0.1.0 pour le MVP)
- Version stable : un point de référence fiable pour les autres développeurs
- Avant un changement risqué : pour pouvoir revenir facilement en cas de problème
Ne tague pas tout. Un tag doit marquer un moment significatif. Si tu tagues chaque commit, les tags perdent leur valeur - comme un sceau qu'on poserait sur chaque page d'un livre.
Exercice pratique - Sceller les Chroniques du Royaume
Crée les chroniques du royaume et marque les trois moments les plus importants de son histoire :
- Crée un dépôt avec un premier commit et tague-le
v0.1.0(tag léger) - Ajoute des commits pour développer le royaume
- Marque la première grande victoire avec un tag annoté
v1.0.0 - Ajoute des commits de réparation après un siège
- Marque la réparation avec un tag annoté
v1.0.1 - Explore et inspecte tes tags
- Lance le script de vérification
Étape 1 - Créer le dépôt et la fondation de la guilde
mkdir sceaux-magiques
cd sceaux-magiques
git init -b main Crée le premier parchemin et fais le premier commit :
echo "# Chroniques du Royaume" > chroniques.txt
echo "" >> chroniques.txt
echo "An 1 - La guilde des Archivistes est fondee." >> chroniques.txt
git add chroniques.txt
git commit -m "Fonder la guilde des Archivistes" Pose un tag léger sur ce moment fondateur :
git tag v0.1.0 Étape 2 - Développer le royaume
echo "An 2 - Les premiers apprentis rejoignent la guilde." >> chroniques.txt
git add chroniques.txt
git commit -m "Accueillir les premiers apprentis"
echo "An 3 - La guilde explore les terres du Nord." >> chroniques.txt
git add chroniques.txt
git commit -m "Explorer les terres du Nord" Étape 3 - La première grande victoire
echo "An 4 - La guilde remporte la bataille de Fort-Givre." >> chroniques.txt
git add chroniques.txt
git commit -m "Remporter la bataille de Fort-Givre" Pose un tag annoté pour marquer cette victoire majeure :
git tag -a v1.0.0 -m "Premiere grande victoire - Bataille de Fort-Givre" Étape 4 - La réparation après le siège
echo "An 5 - Le siege de la Citadelle cause de lourds degats." >> chroniques.txt
git add chroniques.txt
git commit -m "Subir le siege de la Citadelle"
echo "An 6 - Les murailles sont reconstruites plus solides." >> chroniques.txt
git add chroniques.txt
git commit -m "Reconstruire les murailles de la Citadelle" Pose un tag annoté pour marquer la réparation :
git tag -a v1.0.1 -m "Reparation apres le siege - Murailles reconstruites" Étape 5 - Explorer tes sceaux
Liste tous les tags :
git tag Filtre les tags de la version 1 :
git tag -l "v1.*" Inspecte un tag annoté :
git show v1.0.0 Compare avec un tag léger :
git show v0.1.0 Observe la différence : le tag annoté affiche l'auteur, la date et le message du tag, alors que le tag léger montre directement le commit.
Étape 6 - Lancer la vérification
bash verifier.sh .\verifier.ps1 Récapitulatif des commandes
| Commande | Description |
|---|---|
git tag <nom> | Créer un tag léger |
git tag -a <nom> -m "msg" | Créer un tag annoté (recommandé) |
git tag | Lister tous les tags |
git tag -l "v1.*" | Filtrer les tags par motif |
git show <tag> | Voir les détails d'un tag |
git tag <nom> <commit> | Taguer un commit passé |
git push origin <tag> | Pousser un tag spécifique |
git push origin --tags | Pousser tous les tags |
git tag -d <nom> | Supprimer un tag local |
Le Maître Archiviste contemple les sceaux que tu as posés sur les chroniques. Il hoche la tête avec satisfaction.
« Tu maîtrises désormais l'art des Sceaux Magiques. Tu sais marquer les moments importants de l'Histoire, distinguer un sceau rapide d'un sceau officiel, et retrouver n'importe quel jalon en un instant. C'est un pouvoir que les meilleurs Archivistes utilisent avec discernement - chaque sceau doit avoir une raison d'être. »
Il désigne un dernier tag doré, accroché au mur au-dessus de la porte de sortie.
« Souviens-toi : un bon sceau raconte une histoire à lui seul. Son nom, son message, son emplacement - tout doit être choisi avec soin. Les Archivistes qui viendront après toi te remercieront. »