Wie löscht man einen entfernten Tag?

Wie kann man ein Git-Tag löschen, das bereits veröffentlicht wurde?

Lösung

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

Hintergrund

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.

Kommentare (9)

Eine einfachere Methode ist

git push --delete origin YOUR_TAG_NAME

IMO ist die Syntax des vorangestellten Doppelpunkts in dieser Situation ein wenig seltsam

Kommentare (5)

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.

Kommentare (5)