从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为您的远程处理程序名称。