Wie kann man ein Git-Tag löschen, das bereits veröffentlicht wurde?
Sie müssen lediglich einen 'leeren' Verweis auf den Namen des entfernten Tags einfügen:
git push origin :tagname
Oder verwenden Sie die Option --delete
(oder -d
, wenn Ihre Git-Version älter als 1.8.0 ist):
git push --delete origin tagname
Beachten Sie, dass Git einen Tag-Namensraum und einen Zweig-Namensraum hat, so dass Sie denselben Namen für einen Zweig und für ein Tag verwenden können. Wenn Sie sicherstellen wollen, dass Sie nicht versehentlich die Verzweigung anstelle des Tags entfernen, können Sie full ref angeben, wodurch eine Verzweigung niemals gelöscht wird:
git push origin :refs/tags/tagname
Wenn Sie auch das lokale Tag löschen müssen, verwenden Sie:
git tag --delete tagname
Um einen Zweig, ein Tag oder eine andere Referenz in ein entferntes Repository zu pushen, muss man angeben "welches Repository, welche Quelle, welches Ziel?"
git push remote-repo source-ref:destination-ref
Ein Beispiel aus der realen Welt, bei dem Sie Ihren Master-Branch in den Master-Branch des Originals verschieben, ist:
git push origin refs/heads/master:refs/heads/master
Was aufgrund der Standardpfade zu verkürzt werden kann:
git push origin master:master
Tags funktionieren auf die gleiche Weise:
git push origin refs/tags/release-1.0:refs/tags/release-1.0
Was auch abgekürzt werden kann zu:
git push origin release-1.0:release-1.0
Durch das Weglassen des Quellennachweises (der Teil vor dem Doppelpunkt) schieben Sie 'nothing' zum Ziel, indem Sie den Nachweis auf der Gegenseite löschen.
Eine einfachere Methode ist
git push --delete origin YOUR_TAG_NAME
IMO ist die Syntax des vorangestellten Doppelpunkts in dieser Situation ein wenig seltsam
Wenn Sie ein entferntes Tag v0.1.0
zu löschen haben, und Ihr entferntes Tag ist origin
, dann einfach:
git push origin :refs/tags/v0.1.0
Wenn Sie den Tag auch lokal löschen müssen:
git tag -d v0.1.0
Siehe Adam Franco's Antwort für eine Erklärung von Git's ungewöhnlicher :
-Syntax für das Löschen.