Comment supprimer un tag Git qui a déjà été poussé ?
Il suffit de pousser une référence "vide" vers le nom du tag distant :
git push origin :tagname
Ou, de manière plus expressive, utilisez l'option --delete
(ou -d
si votre version de git est antérieure à 1.8.0) :
git push --delete origin tagname
Notez que git dispose d'un espace de noms de tags et d'un espace de noms de branches. Vous pouvez donc utiliser le même nom pour une branche et pour un tag. Si vous voulez vous assurer que vous ne pouvez pas accidentellement supprimer la branche au lieu de la balise, vous pouvez spécifier full ref qui ne supprimera jamais une branche :
git push origin :refs/tags/tagname
Si vous devez également supprimer la balise locale, utilisez :
git tag --delete tagname
Pousser une branche, un tag ou toute autre référence vers un dépôt distant implique de spécifier "quel dépôt, quelle source, quelle destination ?".
git push remote-repo source-ref:destination-ref
Voici un exemple concret où vous poussez votre branche principale vers la branche principale de l'origine :
git push origin refs/heads/master:refs/heads/master
Ce qui, à cause des chemins par défaut, peut être raccourci en :
git push origin master:master
Les balises fonctionnent de la même manière :
git push origin refs/tags/release-1.0:refs/tags/release-1.0
Qui peut aussi être raccourci en :
git push origin release-1.0:release-1.0
En omettant la référence de la source (la partie avant les deux points), vous envoyez "rien" à la destination, en supprimant la référence à l'extrémité distante.
Si vous avez un tag distant v0.1.0
à supprimer, et que votre distant est origin
, alors simplement :
git push origin :refs/tags/v0.1.0
Si vous devez également supprimer la balise localement :
git tag -d v0.1.0
Voir la réponse d'Adam Franco pour une explication de la syntaxe inhabituelle :
de Git pour la suppression.