我想从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存储库中删除所有标记。我该怎么做呢?
使用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 ls-remote --tags --refs origin | cut -f2 | xargs git push origin --delete
不要忘记将“origin”替换为远程处理程序名称。
其他回答
git tag | xargs git tag -d
简单地遵循Unix哲学,即管道处理所有内容。
在Windows上使用相同的命令使用git bash。
要删除远程标记(在删除本地标记之前),只需执行以下操作:
git tag -l | xargs -n 1 git push --delete origin
然后删除本地副本:
git tag | xargs git tag -d
要删除所有本地标签,只需运行以下命令
git tag | xargs git tag -d
如果在执行上述命令删除本地标签后,还需要删除远端标签,可以执行以下命令
git ls-remote --tags --refs origin | cut -f2 | xargs git push origin --delete
注意:用远程处理程序替换原点
在本地,git标记只是磁盘上存储在.git/refs/tags子文件夹中的文件。
你可以只cd .git/refs/tags并删除存储在那里的所有文件,使用你最喜欢的删除文件的方法(rm *,从文件资源管理器UI删除等)。
如果你有很多upstream (origin)标签需要删除,Powershell v7支持parallel foreach:
git tag | foreach-object -Parallel {
git push origin --delete $_
git tag -d $_
}