我想删除git repo中除最新版本之外的所有标签(本地和远程)。我已阅读有关删除所有标签的帖子但无法找到有关有选择地删除它们的信息,即删除除最新标签以外的所有标签
答案 0 :(得分:2)
不知怎的,我在stackoverfolw本身找到了答案。根据我的需要定制它。
删除所有远程标记,但保留最新
$ git describe --abbrev=0 --tags `git rev-list --tags --skip=1` | xargs -n 1 git push --delete origin
删除所有本地代码但保留最新
$ git describe --abbrev=0 --tags `git rev-list --tags --skip=1` | xargs -n 1 git tag -d
答案 1 :(得分:0)
我不相信有一种方法可以在Git CLI中选择性地删除标签。可能有工具可以让你这样做,但我不知道。你可以编写一个可以达到预期效果的小脚本。以下是PowerShell的一小部分,它将达到预期的效果。要运行它,您需要posh-git。
git tag -l | Out-File E:\Git\DemoRepo\tags.txt
$lines = Get-Content E:\Git\DemoRepo\tags.txt | Measure-Object -Line
Write-Host "Number of lines: $($lines.Lines)"
$numberOfOlderTags = $lines.Lines - 1
$tagsToDelete = Get-Content E:\Git\DemoRepo\tags.txt | Select-Object -First $numberOfOlderTags
foreach($tagToDelete in $tagsToDelete)
{
git tag --delete $tagToDelete
}
答案 2 :(得分:0)