我想从Git存储库中删除所有标记。我该怎么做呢?

使用git tag -d tagname在本地删除标签tagname,并使用git push——tags更新git provider上的标签。

我试着:

git tag -d *

但是我看到*表示当前目录中的文件。

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

假设我有很多标签,我想全部删除它们。


当前回答

要删除远程标记(在删除本地标记之前),只需执行以下操作:

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

然后删除本地副本:

git tag | xargs git tag -d

其他回答

斯特凡的答案是不知道如何从远程删除标签。对于windows powershell,可以先删除远程标记,然后删除本地标记。

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

使用通配符模式删除本地和远程标记的一行代码。

TAGPATTERN = " 0.1。*”;——删除$(git标签-l $TAGPATTERN);git标签-d $(git标签-l $TAGPATTERN)

远程标记首先被删除,因为列表是从本地生成的。

如果你的本地回购中没有这些标签,你可以删除远程标签,而不必把它带到本地回购。

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

不要忘记将“origin”替换为远程处理程序名称。

如果你有很多upstream (origin)标签需要删除,Powershell v7支持parallel foreach:

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

简单地遵循Unix哲学,即管道处理所有内容。

在Windows上使用相同的命令使用git bash。