wake-up-neo.com

Löschen Sie alle Tags aus einem Git-Repository

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.

171
Ionică Bizău
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.

326

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
142
karlingen

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.

38

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 $_ }  
20
Yong Choi

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.

19

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 )

10
Gigi2m02

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.

8

Sie können auch verwenden:

git tag -d $(git tag)
5
ViZeke

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

0
DarkWiiPlayer