Come si cancella un tag Git che è già stato spinto?
Hai solo bisogno di spingere un 'empty' riferimento al nome del tag remoto:
git push origin :tagname
Oppure, in modo più espressivo, usa l'opzione --delete
(o -d
se la tua versione di git è più vecchia della 1.8.0):
git push --delete origin tagname
Nota che git ha il namespace dei tag e il namespace dei rami, quindi puoi usare lo stesso nome per un ramo e per un tag. Se vuoi essere sicuro di non poter rimuovere accidentalmente il ramo invece del tag, puoi specificare full ref che non cancellerà mai un ramo:
git push origin :refs/tags/tagname
Se hai anche bisogno di cancellare il tag locale, usa:
git tag --delete tagname
Spingere un ramo, un tag o un altro ref a un repository remoto implica specificare "quale repo, quale sorgente, quale destinazione?
git push remote-repo source-ref:destination-ref
Un esempio del mondo reale in cui si spinge il proprio ramo master al ramo master dell'origine è:
git push origin refs/heads/master:refs/heads/master
Che a causa dei percorsi predefiniti, può essere abbreviato in:
git push origin master:master
I tag funzionano allo stesso modo:
git push origin refs/tags/release-1.0:refs/tags/release-1.0
Che può anche essere abbreviato in:
git push origin release-1.0:release-1.0
Omettendo il ref di origine (la parte prima dei due punti), si spinge 'niente' alla destinazione, cancellando il ref sul lato remoto.
Se avete un tag remoto v0.1.0
da cancellare, e il vostro remoto è origin
, allora semplicemente:
git push origin :refs/tags/v0.1.0
Se hai anche bisogno di cancellare il tag localmente:
git tag -d v0.1.0
Vedi Adam Franco'risposta per una spiegazione dell'insolita sintassi di Git :
per la cancellazione.