我想从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.
...
假设我有很多标签,我想全部删除它们。
当前回答
如果你有很多upstream (origin)标签需要删除,Powershell v7支持parallel foreach:
git tag | foreach-object -Parallel {
git push origin --delete $_
git tag -d $_
}
其他回答
使用通配符模式删除本地和远程标记的一行代码。
TAGPATTERN = " 0.1。*”;——删除$(git标签-l $TAGPATTERN);git标签-d $(git标签-l $TAGPATTERN)
远程标记首先被删除,因为列表是从本地生成的。
如果你有很多upstream (origin)标签需要删除,Powershell v7支持parallel foreach:
git tag | foreach-object -Parallel {
git push origin --delete $_
git tag -d $_
}
在本地,git标记只是磁盘上存储在.git/refs/tags子文件夹中的文件。
你可以只cd .git/refs/tags并删除存储在那里的所有文件,使用你最喜欢的删除文件的方法(rm *,从文件资源管理器UI删除等)。
git tag | xargs git tag -d
简单地遵循Unix哲学,即管道处理所有内容。
在Windows上使用相同的命令使用git bash。
在一个命令中推删除所有标签可能更有效。特别是如果你有几百个。
在一个合适的非windows shell中,删除所有远程标记:
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
其他获取行列表、用引号将它们括起来、使它们成为一行,然后将该行传递给命令的方法可能存在。考虑到这是终极剥猫皮的环境。