Ich möchte alle Tags aus einem Git-Repository löschen. Wie kann ich das machen?
Verwenden Sie git tag -d tagname
, löschen Sie das Tag tagname
lokal und mit git Push --tags
. Ich aktualisiere die Tags auf dem Git-Anbieter.
Ich habe es versucht:
git tag -d *
Aber ich sehe, dass *
die Dateien aus dem aktuellen Verzeichnis bedeutet.
$ git tag -d *
error: tag 'file1' not found.
error: tag 'file2' not found.
...
Angenommen, ich habe viele Tags und möchte sie alle löschen.
git tag | xargs git tag -d
Verwenden Sie einfach die Linux-Philosophie, bei der Sie alles leiten. Verwenden Sie unter Windows git bash mit demselben Befehl.
Um entfernte Tags zu löschen (vor dem Löschen lokaler Tags), führen Sie einfach Folgendes aus:
git tag -l | xargs -n 1 git Push --delete Origin
und löschen Sie dann die lokalen Kopien:
git tag | xargs git tag -d
Es kann effizienter sein, alle Tags in einem Befehl per Push zu löschen. Besonders wenn Sie mehrere hundert haben.
Löschen Sie in einer geeigneten Nicht-Windows-Shell alle entfernten Tags:
git tag | xargs -L 1 | xargs git Push Origin --delete
Dann löschen Sie alle lokalen Tags:
git tag | xargs -L 1 | xargs git tag --delete
Dies sollte in Ordnung sein, solange Sie keinen '
in Ihren Tag-Namen haben. Dafür sollten die folgenden Befehle in Ordnung sein.
git tag | xargs -I{} echo '"{}"' | tr \\n \\0 | xargs --null git Push Origin --delete
git tag | xargs -I{} echo '"{}"' | tr \\n \\0 | xargs --null git tag --delete
Es gibt wahrscheinlich andere Möglichkeiten, eine Liste von Zeilen zu verwenden, sie in Anführungszeichen zu packen, sie in eine einzelne Zeile umzuwandeln und diese Zeile dann an einen Befehl zu übergeben. In Anbetracht dessen ist dies die ultimative Umgebung für die Katzenbildung.
Hinzufügen zu Stefans Antwort, die fehlte, wie Tags von der Fernbedienung gelöscht werden. Bei Windows-Powershell können Sie dies ausführen, um zuerst die entfernten Tags zu löschen, gefolgt von den lokalen Tags.
git tag | foreach-object -process { git Push Origin --delete $_ }
git tag | foreach-object -process { git tag -d $_ }
Für Windows-Benutzer, die PowerShell verwenden:
git tag | foreach-object -process { git tag -d $_ }
Dadurch werden alle von git tag
zurückgegebenen Tags gelöscht, indem für jede zurückgegebene Zeile git tag -d
ausgeführt wird.
Für Windows-Benutzer:
Dadurch werden alle lokalen Tags gelöscht, indem das git-Tag ausgeführt wird und diese Liste dem git-Tag -d zugeführt wird:
FOR /f "tokens=*" %a in ('git tag') DO git tag -d %a
(Gefunden auf: https://Gist.github.com/RandomArray/fdaa427878952d9768b0 )
Wenn Sie die Tags nicht in Ihrem lokalen Repo haben, können Sie entfernte Tags löschen, ohne sie zu Ihrem lokalen Repo zu bringen.
git ls-remote --tags --refs Origin | cut -f2 | xargs git Push Origin --delete
Vergessen Sie nicht, "Origin" durch Ihren Remote-Handler-Namen zu ersetzen.
Sie können auch verwenden:
git tag -d $(git tag)
Da all diese Optionen nur in Linux funktionieren, ist hier das Fenster gleichbedeutend für jeden, der damit umgehen muss: FOR /F usebackq %t IN (
git tag) DO @git tag --delete %t