Aller au contenu
Développement medium
🔐 Alerte sécurité — Incident supply chain Trivy : lire mon analyse de l'attaque

Tags Git : versionner et publier vos releases

9 min de lecture

Les tags Git marquent un point précis de l’historique, typiquement une release. Contrairement aux branches (qui bougent à chaque commit), un tag est un pointeur fixe vers un commit spécifique. Ce guide vous apprend à créer, gérer et pousser des tags, en suivant les conventions du Semantic Versioning.

Prérequis : enregistrer des modifications et consulter l’historique.

  • La différence entre tags légers et tags annotés
  • Créer, lister, supprimer des tags
  • Pousser des tags vers un dépôt distant
  • Adopter le Semantic Versioning (SemVer)

Git propose deux types de tags :

TypeContenuUsage
Tag légerPointeur simple vers un commit (comme un signet)Marquage temporaire, usage local
Tag annotéObjet Git complet : auteur, date, message, signable GPGRecommandé pour les releases

C’est la forme recommandée pour les releases :

Fenêtre de terminal
git tag -a v1.0.0 -m "Première version stable"
  • -a : créer un tag annoté
  • -m : le message associé (comme pour un commit)

Vérification :

Fenêtre de terminal
git show v1.0.0

Sortie attendue :

tag v1.0.0
Tagger: Stéphane ROBERT <stephane@example.com>
Date: Fri Mar 28 14:30:00 2026 +0100
Première version stable
commit 3f7a2b1c8e9d4f5a6b7c8d9e0f1a2b3c4d5e6f7a (HEAD -> main, tag: v1.0.0)
Author: Stéphane ROBERT <stephane@example.com>
Date: Fri Mar 28 14:30:00 2026 +0100
Ajout de la page de contact

Le tag annoté stocke le nom du tagger, la date et le message en plus de pointer vers le commit.

Pour un marquage rapide sans métadonnées :

Fenêtre de terminal
git tag v1.0.0-beta

Pas de -a, pas de -m. Le tag pointe simplement vers le commit courant, sans information supplémentaire.

Vous avez oublié de tagger au moment du commit ? Pas de problème :

Fenêtre de terminal
git log --oneline -5
3f7a2b1 Ajout de la page de contact
a1b2c3d Correction du bug d'affichage
9c8d7e6 Refactoring du CSS
f5e4d3c Ajout de la page d'accueil
1a2b3c4 Initial commit

Taggez un commit spécifique :

Fenêtre de terminal
git tag -a v0.9.0 -m "Version beta" a1b2c3d
Fenêtre de terminal
git tag

Sortie attendue :

v0.9.0
v1.0.0
v1.0.0-beta

Filtrer par pattern :

Fenêtre de terminal
git tag -l "v1.*"
v1.0.0
v1.0.0-beta

Pour voir les tags avec leurs messages :

Fenêtre de terminal
git tag -n
v0.9.0 Version beta
v1.0.0 Première version stable
v1.0.0-beta (pas de message — tag léger)

Par défaut, git push ne pousse pas les tags. Il faut le faire explicitement.

Fenêtre de terminal
git push origin v1.0.0
Fenêtre de terminal
git push origin --tags
Fenêtre de terminal
git tag -d v1.0.0-beta
Fenêtre de terminal
git push origin --delete v1.0.0-beta

Ou avec la syntaxe refspec :

Fenêtre de terminal
git push origin :refs/tags/v1.0.0-beta

La convention de nommage la plus répandue pour les tags :

vMAJEUR.MINEUR.PATCH
ComposantQuand l’incrémenterExemple
MAJEURChangement incompatible (breaking change)v1.0.0v2.0.0
MINEURNouvelle fonctionnalité rétrocompatiblev1.0.0v1.1.0
PATCHCorrection de bug rétrocompatiblev1.0.0v1.0.1
v0.1.0 → Première version utilisable (pas encore stable)
v0.2.0 → Ajout d'une fonctionnalité
v0.2.1 → Correction d'un bug
v1.0.0 → Première release stable (API publique figée)
v1.1.0 → Nouvelle fonctionnalité rétrocompatible
v2.0.0 → Breaking change (migration requise)
v1.0.0-alpha → Version très préliminaire
v1.0.0-beta → Version de test
v1.0.0-rc.1 → Release Candidate 1
v1.0.0 → Version stable
  1. Vérifiez que tout est propre

    Fenêtre de terminal
    git status
    git log --oneline -5
  2. Créez le tag annoté

    Fenêtre de terminal
    git tag -a v1.2.0 -m "Ajout de l'authentification OAuth"
  3. Poussez le tag

    Fenêtre de terminal
    git push origin v1.2.0
  4. Vérifiez sur le remote

    Fenêtre de terminal
    git ls-remote --tags origin
SymptômeCause probableSolution
error: tag 'v1.0.0' already existsUn tag avec ce nom existe déjàSupprimez-le d’abord (git tag -d v1.0.0) ou utilisez un autre nom
Les tags n’apparaissent pas sur GitHub/GitLabTags non poussésgit push origin --tags
git describe affiche un résultat inattenduPas de tag annoté dans l’historiquegit describe cherche les tags annotés par défaut. Utilisez --tags pour inclure les légers
Tag sur le mauvais commitLe tag pointe vers HEAD au moment de la créationSupprimez-le et recréez-le sur le bon commit : git tag -a v1.0.0 SHA
SituationTag recommandéCommande
Release publique (v1.0.0, v2.3.1…)Annotégit tag -a v1.0.0 -m "..."
Marquer un point de repère temporaireLégergit tag wip-avant-refacto
Tag qui sera poussé et visible sur GitHub/GitLabAnnotégit tag -a
Tag local uniquement, jamais pousséLégergit tag
Release avec signature GPGAnnoté + signégit tag -s v1.0.0 -m "..."

En pratique : utilisez toujours le tag annoté sauf pour les repères temporaires. git describe et les plateformes comme GitHub reconnaissent les tags annotés en priorité pour les releases.

  • Tags annotés (git tag -a) sont recommandés pour les releases : ils contiennent auteur, date et message
  • Tags légers sont de simples pointeurs — pour un usage temporaire
  • git push ne pousse pas les tags automatiquement — utilisez git push origin --tags ou --follow-tags
  • Semantic Versioning (MAJEUR.MINEUR.PATCH) est la convention standard
  • Utilisez git tag -d en local et git push --delete pour le remote

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracing. Aujourd'hui, ce site ne couvre même pas mes frais d'hébergement, d'électricité, de matériel, de logiciels, mais surtout de cafés.

Un soutien régulier, même symbolique, m'aide à garder ces ressources gratuites et à continuer de produire des guides de qualité. Merci pour votre appui.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn