Exercice 05 : Versionner avec les tags Git
🎯 Objectifs
À la fin de cet exercice, vous serez capable de :
- ✅ Créer un tag léger et un tag annoté
- ✅ Pousser des tags vers un repository distant
- ✅ Utiliser
git describepour positionner un commit dans l'historique - ✅ Appliquer les conventions du semantic versioning (
v1.0.0)
Durée estimée : 15 minutes | Difficulté : ⭐⭐⭐☆☆
📖 Contexte
Les tags Git permettent de marquer des points précis dans l'historique, typiquement des releases. Contrairement aux branches, les tags ne bougent pas : ils pointent toujours sur le même commit.
Le semantic versioning (SemVer) est la convention la plus répandue : vMAJEUR.MINEUR.PATCH.
MAJEUR: changement incompatible avec l'API existanteMINEUR: nouvelle fonctionnalité rétrocompatiblePATCH: correction de bug rétrocompatible
📋 Énoncé
Vous avez un repository git-intermediaire-tp avec quelques commits. Vous allez créer des tags pour marquer des versions, les pousser sur GitHub, et naviguer dans l'historique grâce à eux.
🧭 Déroulement
Tâche 1 : Créer un tag léger
Sur le commit actuel de main, créez un tag léger nommé v1.0.0. Listez les tags disponibles et affichez le commit auquel il pointe.
Indice :
git tag v1.0.0crée un tag léger sur HEAD.git tagliste tous les tags.git show v1.0.0affiche les détails du commit tagué. Un tag léger est juste un alias vers un commit - pas de métadonnées supplémentaires.
Vérification : git tag affiche v1.0.0. git show v1.0.0 affiche le commit correspondant.
Tâche 2 : Créer un tag annoté
Créez un nouveau commit, puis créez un tag annoté v1.1.0 avec un message de release décrivant les changements. Comparez la différence avec le tag léger.
Indice :
git tag -a v1.1.0 -m "Release v1.1.0 : ajout de nouvelles sections". Un tag annoté est un objet Git complet avec auteur, date et message - recommandé pour les releases officielles.
Vérification : git show v1.1.0 affiche les métadonnées du tag (tagger, date, message) AVANT les détails du commit.
Tâche 3 : Pousser les tags vers GitHub
Poussez vos deux tags vers le repository distant. Vérifiez sur GitHub que les tags apparaissent dans l'onglet "Tags" / "Releases".
Indice :
git pushne pousse PAS les tags par défaut. Utilisezgit push origin v1.0.0pour un tag précis, ougit push origin --tagspour tous les tags à la fois. Sur GitHub, les tags annotés peuvent être convertis en Releases.
Vérification : Sur GitHub, l'onglet "Releases" (ou "Tags") affiche v1.0.0 et v1.1.0.
Tâche 4 : Naviguer et supprimer des tags
Créez un tag v0.9.0 sur un ancien commit (pas HEAD). Puis supprimez-le localement et sur le remote.
Indice :
git tag v0.9.0 <SHA>tague un commit précis.git tag -d v0.9.0supprime localement.git push origin --delete v0.9.0supprime le tag distant.
Vérification : git tag ne liste plus v0.9.0. Sur GitHub, le tag n'apparait plus.
Tâche 5 : Utiliser git describe
Faites 2 commits après v1.1.0. Utilisez git describe pour afficher la position de HEAD par rapport au dernier tag.
Indice :
git describe --tagsaffichev1.1.0-2-gabcdef: dernier tag (v1.1.0), nombre de commits depuis (2), SHA du commit actuel (gabcdef). Très utilisé dans les pipelines CI/CD pour générer des numéros de build automatiques.
Vérification : git describe --tags retourne une chaîne au format v1.1.0-N-g<sha>.
🗂️ Mini-Projet
# Tag léger
git tag v1.0.0
git tag # lister les tags
# Tag annoté (recommandé pour les releases)
git tag -a v1.1.0 -m "Release v1.1.0"
git show v1.1.0
# Pousser les tags
git push origin --tags # tous les tags
git push origin v1.1.0 # un tag précis
# Tagger un ancien commit
git tag v0.9.0 <SHA>
git tag -d v0.9.0 # supprimer localement
git push origin --delete v0.9.0 # supprimer sur le remote
# Décrire la position dans l'historique
git describe --tagsCheckpoints :
git taglistev1.0.0etv1.1.0git show v1.1.0affiche les métadonnées du tag annoté- Les tags sont visibles sur GitHub dans l'onglet "Tags"
git describe --tagsretourne un identifiant de build