Hvordan sletter jeg en ekstern tag?

Hvordan sletter du en Git-tag som allerede har blitt pushet?

Løsning

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

Bakgrunn

Å 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.

Kommentarer (9)

En enklere måte er

git push --delete origin YOUR_TAG_NAME

IMO-syntaks med prefiks for kolon er litt merkelig i denne situasjonen

Kommentarer (5)

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.

Kommentarer (5)