Answers:
要删除远程标签(在删除本地标签之前),只需执行以下操作:
git tag -l | xargs -n 1 git push --delete origin
然后删除本地副本:
git tag | xargs git tag -d
在一个命令中推送删除所有标签可能更有效。特别是如果您有几百个。
在合适的非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
还可能存在其他方法来获取行列表,将它们用引号引起来,将它们制成单行然后将该行传递给命令。考虑到这是最终的猫剥皮环境以及所有其他情况。
xargs -L 1
办?
git tag
返回标签,每行一个,然后每行xargs -L 1
输出一个,这是什么意思?
对于使用PowerShell的Windows用户:
git tag | foreach-object -process { git tag -d $_ }
这将通过git tag
执行返回的git tag -d
每一行来删除所有返回的标签。
如果本地存储库中没有标签,则可以删除远程标签,而不必将其带入本地存储库。
git ls-remote --tags --refs origin | cut -f2 | xargs git push origin --delete
不要忘记将“ origin”替换为您的远程处理程序名称。
对于Windows用户:
这将通过运行git tag并将该列表提供给git tag -d来删除所有本地标签:
FOR /f "tokens=*" %a in ('git tag') DO git tag -d %a
(位于:https : //gist.github.com/RandomArray/fdaa427878952d9768b0)
由于所有这些选项仅适用于linux,因此以下是任何需要处理的Windows等效工具:
FOR /F usebackq %t IN (`git tag`) DO @git tag --delete %t
我必须删除带有前缀的标签
例如,我必须删除标签v0.0.1,v0.0.2,v0.0.3,v0.0.4,v0.0.5
git tag -d $(git tag -l "v0.0.*")
列出所有带有前缀的标签
git tag -l "v0.0.*"
删除标签
git tag -d $tag_names
这就是第一个语句的工作方式
如果您需要删除许多上游(原始)标签,Powershell v7支持并行foreach:
git tag | foreach-object -Parallel {
git push origin --delete $_
git tag -d $_
}
git tag -l | xargs -n 1 git push --delete origin
从远程删除它们。