我想删除Git存储库中的所有标记.我怎样才能做到这一点?
使用git tag -d tagname在tagname本地删除标记,并使用git push --tags我更新git提供程序上的标记.
我试过了:
git tag -d *
Run Code Online (Sandbox Code Playgroud)
但我看到这*意味着当前目录中的文件.
$ git tag -d *
error: tag 'file1' not found.
error: tag 'file2' not found.
...
Run Code Online (Sandbox Code Playgroud)
考虑我有很多标签,我想删除它们.
Flo*_*ine 368
git tag | xargs git tag -d
Run Code Online (Sandbox Code Playgroud)
只需使用管理所有内容的Linux哲学.在Windows上使用git bash使用相同的命令.
kar*_*gen 172
删除远程标签(删除本地标签之前)只需执行以下操作:
git tag -l | xargs -n 1 git push --delete origin
Run Code Online (Sandbox Code Playgroud)
然后删除本地副本:
git tag | xargs git tag -d
Run Code Online (Sandbox Code Playgroud)
Ric*_*ing 45
在一个命令中删除所有标记可能更有效.特别是如果你有几百个.
在合适的非Windows shell中,删除所有远程标记:
git tag | xargs -L 1 | xargs git push origin --delete
Run Code Online (Sandbox Code Playgroud)
然后删除所有本地标签:
git tag | xargs -L 1 | xargs git tag --delete
Run Code Online (Sandbox Code Playgroud)
只要'您的标签名称中没有a ,这应该没问题.为此,以下命令应该没问题.
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
Run Code Online (Sandbox Code Playgroud)
获取行列表,将它们包装在引号中,使它们成为单行,然后将该行传递给命令的其他方法可能存在.考虑到这是最终的猫皮肤环境和所有.
小智 22
对于使用PowerShell的Windows用户:
git tag | foreach-object -process { git tag -d $_ }
Run Code Online (Sandbox Code Playgroud)
这将删除git tag通过执行返回的git tag -d每一行返回的所有标记.
小智 21
添加到Stefan的答案,该答案忽略了如何从远程删除标签.对于Windows PowerShell,您可以运行此命令首先删除远程标记,然后删除本地标记.
git tag | foreach-object -process { git push origin --delete $_ }
git tag | foreach-object -process { git tag -d $_ }
Run Code Online (Sandbox Code Playgroud)
Dav*_*opa 17
要删除所有本地标签,只需运行以下命令
git tag | xargs git tag -d
Run Code Online (Sandbox Code Playgroud)
要通过运行上述命令删除本地标签后删除远程标签,可以运行以下命令
git ls-remote --tags --refs origin | cut -f2 | xargs git push origin --delete
Run Code Online (Sandbox Code Playgroud)
注意:将 origin 替换为您的远程处理程序
Val*_*ura 15
如果您的本地仓库中没有标签,则可以删除远程标签,而无需将其带到本地仓库.
git ls-remote --tags --refs origin | cut -f2 | xargs git push origin --delete
Run Code Online (Sandbox Code Playgroud)
不要忘记将"origin"替换为远程处理程序名称.
Gig*_*m02 10
对于Windows用户:
这会删除所有本地标记,方法是运行git标记并将该列表提供给git tag -d:
FOR /f "tokens=*" %a in ('git tag') DO git tag -d %a
Run Code Online (Sandbox Code Playgroud)
(发现于:https://gist.github.com/RandomArray/fdaa427878952d9768b0)
我必须删除带有前缀的标签
例如,我必须删除标签 v0.0.1、v0.0.2、v0.0.3、v0.0.4、v0.0.5
git tag -d $(git tag -l "v0.0.*")
Run Code Online (Sandbox Code Playgroud)
分解并解释上面的语句:
列出所有带有前缀的标签
git tag -l“v0.0.*”
删除标签
git tag -d $tag_names git tag -d $tag_names
这就是该声明的作用