2013-10-23 87 views
140

我想從Git存儲庫中刪除所有標籤。我怎樣才能做到這一點?刪除Git存儲庫中的所有標籤

使用git tag -d tagname在本地刪除標記tagname,並使用git push --tags我更新了git提供程序上的標記。

我想:

git tag -d * 

但我看到*指從當前目錄中的文件。

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

考慮我有很多標籤,我想刪除它們,所有。

回答

255
git tag | xargs git tag -d 

只需使用Linux管理哲學,您可以管理所有內容。在Windows上使用相同的命令使用git bash。

+82

謝謝。該命令刪除本地標籤。我使用了'git tag -l | xargs -n 1 git push --delete origin'將它們從遠程刪除。 –

+1

@Johnツ很高興你能掌握linux的哲學:P –

+4

並在Windows上? – CoDEmanX

107

要刪除遠程標籤(刪除局部變量)之前簡單地做:

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

,然後刪除本地副本:

git tag | xargs git tag -d 

注意:添加這個答案以供將來的Google。

+0

Working ... tnx :) – deanpodgornik

+0

遠程刪除對於數十個標籤來說太慢了。 – ffxsam

+0

如果你有很多遠程標籤,這個答案會更快:http://stackoverflow.com/a/34395864/747044 – harianus

16

對於Windows使用PowerShell的用戶:

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

這會刪除所有由git tag通過爲每個返回行執行git tag -d

30

推動刪除一個命令中的所有標籤可能更有效。特別是如果你有幾百個。

在合適的非Windows外殼,刪除所有遠程標籤:

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

然後刪除所有本地標籤:

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

這應該是OK,只要你沒有'在您的標籤名稱中。爲此,以下命令應該可以。

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 

採取行的列表,在報價包裝他們,使他們一行,然後通過該行的命令其他方式可能存在。考慮到這是最終的貓皮環境和所有。

+3

我有幾千個標籤,將它們從遠程雲端存儲庫一個接一個地刪除,這需要花費數天時間,這就解決了。 –

18

添加到斯蒂芬的答案,這是缺少如何從遠程刪除標籤。對於Windows PowerShell,你可以運行它來先刪除遠程標籤,然後再刪除本地標籤。

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

您還可以使用:

git tag -d $(git tag) 
0

如果你沒有在你的本地回購標籤,你可以刪除遠程標籤不具有把它帶到你的本地回購。

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

不要忘記將「origin」替換爲您的遠程處理程序名稱。

相關問題