从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. ... 

考虑我有很多标签,我想删除它们。

 git tag | xargs git tag -d 

简单地使用pipe理一切的Linux哲学。

要删除远程标签(在删除本地标签之前),只需执行:

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

然后删除本地副本:

 git tag | xargs git tag -d 

注意:为未来的googlers添加了这个答案。

在一个命令中推送删除所有标签可能更有效。 特别是如果你有几百个。

在合适的非Windowsshell中,删除所有远程标签:

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

然后删除所有的本地标签:

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

这应该是好的,只要你没有在你的标签名称。 为此,以下命令应该是可以的。

 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 

其他的方法是把行列出来,用引号把它们包装起来,把它们一行一行,然后把那行传给一个命令。 考虑到这是最终的猫皮肤环境和所有。

对于使用PowerShell的Windows用户:

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

这将删除所有由git tag标签返回的git tag通过为每个返回的行执行git tag -d

添加到Stefan的答案,这是缺less如何从远程删除标签。 对于Windows PowerShell,你可以运行这个删除远程标签,然后是本地标签。

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

对于Windows用户:

这将通过运行git标签并将该列表提供给git tag -d来删除所有Local Tags:

 FOR /f "tokens=*" %a in ('git tag') DO git tag -d %a 

(发现于: https : //gist.github.com/RandomArray/fdaa427878952d9768b0 )

你也可以使用:

 git tag -d $(git tag) 

如果您的本地仓库中没有标签,则可以删除远程标签,而无需将其带到本地仓库。

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

不要忘记将“origin”replace为您的远程处理程序名称。