Hvordan sletter du en Git-tag som allerede har blitt pushet?
Du trenger bare å trykke på en 'tom' referanse til navnet på den eksterne taggen:
git push origin :tagname
Eller, mer uttrykkelig, bruk --delete
-alternativet (eller -d
hvis git-versjonen din er eldre enn 1.8.0):
git push --delete origin tagname
Merk at git har tag namespace og branch namespace slik at du kan bruke samme navn for en gren og for en tag. Hvis du vil være sikker på at du ikke ved et uhell kan fjerne grenen i stedet for taggen, kan du spesifisere full ref som aldri vil slette en gren:
git push origin :refs/tags/tagname
Hvis du også trenger å slette den lokale taggen, bruker du:
git tag --delete tagname
Å skyve en gren, tag eller annen referanse til et eksternt depot innebærer å spesifisere "hvilken repo, hvilken kilde, hvilken destinasjon";
git push remote-repo source-ref:destination-ref
Et eksempel fra den virkelige verden der du skyver hovedgrenen din til opprinnelsens hovedgren er:
git push origin refs/heads/master:refs/heads/master
Som på grunn av standardstier kan forkortes til:
git push origin master:master
Tags fungerer på samme måte:
git push origin refs/tags/release-1.0:refs/tags/release-1.0
Som også kan forkortes til:
git push origin release-1.0:release-1.0
Ved å utelate kildereferansen (delen før kolon), skyver du 'ingenting' til destinasjonen, og sletter referansen i den eksterne enden.
Hvis du har en ekstern tag v0.1.0
å slette, og din fjernkontroll er origin
, så ganske enkelt:
git push origin :refs/tags/v0.1.0
Hvis du også trenger å slette taggen lokalt:
git tag -d v0.1.0
Se Adam Franco's svar for en forklaring av Git's uvanlige :
-syntaks for sletting.