Wie kann ich ein Remote-Tag löschen?

Lesezeit: 6 Minuten

Benutzeravatar von markdorison
markdorison

Wie kann ich ein bereits gepushtes Git-Tag löschen?

Benutzeravatar von Adam Franco
Adam Franco

Sie können eine „leere“ Referenz auf den Remote-Tag-Namen übertragen:

git push origin :tagname

Oder, noch ausdrucksstärker, verwenden Sie die --delete Möglichkeit (bzw -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, sodass Sie denselben Namen für einen Zweig und für ein Tag verwenden können. Wenn Sie sicherstellen möchten, dass Sie nicht versehentlich den Zweig anstelle des Tags entfernen können, können Sie die vollständige Referenz angeben, wodurch ein Zweig 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

Das Pushen eines Zweigs, Tags oder einer anderen Referenz an ein entferntes Repository beinhaltet die Angabe „welches Repo, welche Quelle, welches Ziel?“.

git push remote-repo source-ref:destination-ref

Ein reales Beispiel, bei dem Sie Ihren Master-Branch zum Master-Branch des Ursprungs pushen, ist:

git push origin refs/heads/master:refs/heads/master

Was aufgrund von Standardpfaden verkürzt werden kann zu:

git push origin master:master

Tags funktionieren genauso:

git push origin refs/tags/release-1.0:refs/tags/release-1.0

Was auch verkürzt werden kann zu:

git push origin release-1.0:release-1.0

Indem Sie die Quellreferenz (den Teil vor dem Doppelpunkt) weglassen, schieben Sie “nichts” an das Ziel und löschen die Referenz am entfernten Ende.

  • +1 sowohl für die Beantwortung der Frage als auch für die Erläuterung des allgemeinen Falls und die Erläuterung der Bedeutung der ungekürzten Syntax

    – Peter Wirt

    14. September 2012 um 19:03 Uhr


  • Und für den Fall, dass sich jemand fragt, wie man mehrere Tags gleichzeitig löscht, listen Sie sie einfach mit Leerzeichen auf, z git push --delete origin tag1 tag2. Gleiches gilt für das Löschen lokaler Tags git tag -d tag1 tag2

    – Dmitri

    28. Mai 2014 um 0:54 Uhr

  • Wenn der Tag-Name mit einem Zweignamen kollidiert, kann es sein, dass Sie Ihren Zweig löschen. Haha. Siehe die zweite Antwort – es ist ökologischer

    – zuba

    26. Dezember 2016 um 9:56 Uhr


  • Das ist auch interessant zu wissen git tag -d `git tag` löscht alle lokalen Tags. Gleiches gilt für git push --delete origin `git tag` vorausgesetzt, Sie haben die Remote-Tags lokal abgerufen. Das war praktisch in einer Testumgebung.

    – DarkFranX

    31. Juli 2018 um 15:15 Uhr

  • Die Tatsache, dass wir bei über 6700 Upvotes sind und dass es so verdammt kompliziert ist, bedeutet wahrscheinlich, dass es neu gestaltet werden könnte.

    – LMS5400

    31. August 2021 um 21:31 Uhr


Benutzeravatar von quexer
Quexer

Ein einfacherer Weg ist

git push --delete origin YOUR_TAG_NAME

IMO-Syntax mit vorangestelltem Doppelpunkt ist in dieser Situation etwas seltsam

  • Ich denke, das ist der richtige Weg … andere Syntax sieht für mich eher nach Hacks aus.

    – Luigi R. Viggiano

    24. Dezember 2012 um 17:45 Uhr

  • Das funktioniert. Eine Ergänzung: Wenn Sie einen Zweig und ein Tag mit demselben Namen haben, können Sie das Wort einfügen tag vor Ihrem Tag-Namen, um sicherzustellen, dass Sie das Tag und nicht den Zweig erhalten.

    – andypaxo

    27. März 2013 um 20:08 Uhr

  • @andypaxo Was der Befehl braucht, sind refspecs, der richtige Weg wäre, den Tags voranzustellen refs/tags/so was: refs/tags/v2.3.1.

    – p3lim

    13. März 2015 um 5:04 Uhr

  • Ich hatte irgendwie einen “schlechten” Tag-Namen auf dem Remote-Server erstellt, der Sonderzeichen hatte, also kann ich damit nicht synchronisieren, also habe ich das einfach mit deinem Vorschlag entfernt: git push –delete origin “service–— 151″ , kann es nicht entfernen, nicht mit intellij, nicht mit stash, nicht mit sourceTree. Vielen Dank !

    – Dmitri Algazin

    12. April 2019 um 14:54 Uhr

  • Für diejenigen, die dies lange nach der Veröffentlichung der Antwort lesen, hatte die (jetzt akzeptierte) Antwort diesen Inhalt zu diesem Zeitpunkt nicht; später wurde der Inhalt dieser Antwort (sehr knapp) vorgeschlagen, in den akzeptierten geändert zu werden. Dies ist einer dieser seltsamen Grenzfälle, in denen Stack Overflows “Die beste Antwort steigt in das oberste System” irgendwie fehlschlägt. Einerseits bin ich froh, dass die akzeptierte Antwort die richtigen Informationen enthält, da die meisten Leser nicht über die oberste Antwort hinausschauen. aber ich bin nicht begeistert, wie wir hierher gekommen sind … Ich hoffe, zukünftige Leser werden nicht denken, dass diese Antwort nur ein Kopieren / Einfügen ist.

    – jrh

    5. März 2020 um 16:17 Uhr


Benutzeravatar von Alex Dean
Alex Dekan

Wenn Sie ein Remote-Tag haben v0.1.0 zu löschen, und Ihre Fernbedienung ist origindann einfach:

git push origin :refs/tags/v0.1.0

Wenn Sie das Tag auch lokal löschen müssen:

git tag -d v0.1.0

Sehen Adam Franco‘s Antwort für eine Erklärung von Git’s Ungewöhnlichem : Syntax zum Löschen.

  • das geht auch mit jgit. Die Kurzschrift :tag funktioniert nicht mit jgit

    – Rynop

    27. September 2012 um 19:50 Uhr

  • ich habe fatal: remote part of refspec is not a valid name in :/refs/tags/0.0.1 …?

    – Chaim Elijah

    13. September 2016 um 23:17 Uhr

  • @ChaimEliyah Sie haben einen führenden Schrägstrich, vielleicht ist das Ihr Problem

    – Joffrey

    31. Oktober 2016 um 22:21 Uhr

  • Bessere Antwort, da dies auch funktioniert, wenn Sie einen Zweig und ein Tag mit demselben Namen haben.

    – Erik A. Brandstadmoen

    5. Februar 2018 um 8:25 Uhr

  • Gerade :tagname sollte für die Fernlöschung funktionieren.

    – Asklepios

    5. Februar 2019 um 21:32 Uhr

Benutzeravatar von Siddhartha Mukherjee
Siddhartha Mukherjee

Löschen Sie alle lokalen Tags und rufen Sie die Liste der Remote-Tags ab:

git tag -l | xargs git tag -d
git fetch

Entfernen Sie alle Remote-Tags

git tag -l | xargs -n 1 git push --delete origin

Bereinigen Sie lokale Tags

git tag -l | xargs git tag -d

Benutzeravatar von Mahmoud Zalt
Mahmoud Zalt

Gehen Sie von Ihrem Terminal aus wie folgt vor:

git fetch
git tag
git tag -d {tag-name}
git push origin :refs/tags/{tag-name}

Gehen Sie jetzt zu Github.com und aktualisieren Sie sie, sie verschwinden.

git tag -d your_tag_name
git push origin :refs/tags/your_tag_name

Die erste Zeile wird gelöscht your_tag_name aus lokal Repo und Löschungen der zweiten Zeile your_tag_name aus Fernbedienung Repo.

Für diejenigen, die GitHub verwenden, ist ein weiterer Schritt erforderlich: Entwurf verwerfen.
Geben Sie hier die Bildbeschreibung ein

git push --delete origin $TAGNAME ist der richtige Ansatz (zusätzlich zu einem lokalen Löschen).

Aber: Stellen Sie sicher, dass Sie Git 2.31+ (Q1 2021) verwenden.

git push $there --delete(Mann) hätte als Fehler diagnostiziert werden sollen, wurde aber stattdessen zu einem passenden Push, der mit Git 2.31 (Q1 2021) korrigiert wurde.

Sehen Commit 20e4164 (23.02.2021) von Junio ​​C Hamano (gitster).
(Zusammengeführt von Junio ​​C. Hamano — gitster in Festschreibung 140045825.02.2021)

push: nicht abbiegen --delete '' in einen passenden Stoß

Aufgefallen von: Tilman Vogel

Als wir einen Syntaxzucker hinzugefügt haben “git push remote --delete(Mann) <ref> zu “git push(Mann) als Synonym zum Kanonischen git push remote(Mann) : Syntax bei f517f1f (“builtin-push: add(Mann) --delete als syntaktischer Zucker für :foo”, 30.12.2009, Git v1.7.0-rc0 — verschmelzen), haben wir nicht sorgfältig genug darauf geachtet <ref> ist nicht leer.

Blind umschreiben“--delete <ref>” zu “:<ref>” bedeutet, dass eine leere Zeichenfolge <ref> ergibt refspec “:“, was die Syntax ist, um nach “passendem” Push zu fragen, der nichts löscht.

Schlimmer noch, wenn es passende Referenzen gäbe, die vorgespult werden können, wären sie vorzeitig veröffentlicht worden, selbst wenn der Benutzer das Gefühl hat, dass sie noch nicht bereit sind, herausgeschoben zu werden, was eine echte Katastrophe wäre.

  • Es klappt! Verdammt, warum sie diese Option nicht in Veröffentlichungen auf Github setzen. Ich habe ein Update desselben Tags mit älteren Reißverschlüssen durchgeführt. Es dauerte eine Weile, bis ich bemerkte, dass das Datum nicht in Ordnung war. und dann habe ich mehrere Versuche unternommen, bis ich diese Seite gesehen habe.

    – Uneconscience UneSource

    13. Oktober um 12:28 Uhr


1434310cookie-checkWie kann ich ein Remote-Tag löschen?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy