2013-10-23 12 views
140

Chcę usunąć wszystkie znaczniki z repozytorium Git. Jak mogę to zrobić?Usuń wszystkie znaczniki z repozytorium Git

usuń tag lokalnie i używając tagname zaktualizuj tagi dostawcy git.

Próbowałem:

git tag -d * 

Ale widzę, że * Oznacza pliki z bieżącego katalogu.

$ git tag -d * 
error: tag 'file1' not found. 
error: tag 'file2' not found. 
... 

Rozważ, że mam dużo tagów i chcę je usunąć, wszystkie.

Odpowiedz

255
git tag | xargs git tag -d 

Po prostu użyj filozofii Linuksa, w której wszystko potrącasz. W systemie Windows użyj git bash z tym samym poleceniem.

+82

Dzięki. To polecenie usuwa lokalne znaczniki. Użyłem 'git tag -l | xargs -n 1 git push --delete origin' usuwa je z pilota. –

+1

@John ツ Cieszę się, że mogłeś zrozumieć filozofię Linuksa: P –

+4

A na Windowsie? – CoDEmanX

107

Aby usunąć znaczniki zdalny (przed usunięciem tagów lokalnych) po prostu zrobić:

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

a następnie usunąć lokalne kopie:

git tag | xargs git tag -d 

Uwaga: Dodano ta odpowiedź dla przyszłych pracowników Google.

+0

Praca ... tnx :) – deanpodgornik

+0

Zdalne usuwanie jest zbyt wolne dla tuzinów tagów. – ffxsam

+0

Ta odpowiedź jest szybsza, jeśli masz dużo zdalnych tagów: http://stackoverflow.com/a/34395864/747044 – harianus

16

Dla Windows użytkownicy korzystający z PowerShell:

git tag | foreach-object -process { git tag -d $_ } 

Powoduje usunięcie wszystkich znaczników zwróconych przez git tag, wykonując git tag -d dla każdej zwróconej linii.

30

Skuteczniejsze może być wypychanie wszystkich tagów w jednym poleceniu. Zwłaszcza jeśli masz kilkaset osób.

w odpowiednim niż Windows Shell, Usuń wszystkie zdalne tags:

git tag | xargs -L 1 | xargs git push origin --delete 

Następnie usuń wszystkie lokalne tagi:

git tag | xargs -L 1 | xargs git tag --delete 

to powinno być OK, tak długo, jak nie masz ' w nazwach znaczników. W tym celu następujące polecenia powinny być w porządku.

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 

Inne sposoby podejmowania listę linii, owijając je w cudzysłowie, co czyni je jedną linię, a następnie przechodząc do tego wiersza polecenia prawdopodobnie istnieć. Biorąc to pod uwagę, jest to najlepsze środowisko, w którym można skroić kota.

+3

Miałem kilka tysięcy tagów, usuwanie ich jeden po drugim z zdalnego repozytorium w chmurze trwało kilka dni, a to rozwiązało. –

18

Dodanie do odpowiedzi Stefana, której brakowało, jak usunąć znaczniki ze zdalnego.W oknie powershell możesz uruchomić to, aby usunąć zdalne znaczniki, a następnie znaczniki lokalne.

git tag | foreach-object -process { git push origin --delete $_ } 
git tag | foreach-object -process { git tag -d $_ } 
5

Można również użyć:

git tag -d $(git tag) 
0

Jeśli nie masz tagi w lokalnym repo, można usunąć bez tagów zdalnych muszą zgłosić się do lokalnego repo.

git ls-remote --tags --refs origin | cut -f2 | xargs git push origin --delete 

Nie zapomnij zamienić "origin" na nazwę zdalnego programu obsługi.

Powiązane problemy