我想删除我的git仓库中的所有标签(本地和远程),除了最新的一个。我已经阅读了关于删除所有标签的帖子,但找不到关于选择性删除它们的信息,即删除所有标签,除了最新的一个。
dced5bon1#
不知何故,我在Stack Overflow本身找到了答案。根据我的需要定制了一点。删除所有远程标记,但保留最新标记
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
xxls0lw82#
要在本地删除所有标记(即使是Windows):
git tag -d `git tag | grep -E '.'`
我找到了解决方案here。
ltskdhd13#
我不相信有一种方法可以在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 }
3条答案
按热度按时间dced5bon1#
不知何故,我在Stack Overflow本身找到了答案。根据我的需要定制了一点。
删除所有远程标记,但保留最新标记
删除所有本地标签但保留最新标签
xxls0lw82#
要在本地删除所有标记(即使是Windows):
我找到了解决方案here。
ltskdhd13#
我不相信有一种方法可以在Git CLI中选择性地删除标签。可能有一些工具可以让你这样做,但我不知道有任何工具。你可以写一个小脚本来达到预期的效果。下面是一个PowerShell的片段,它将达到预期的效果。要运行它,你需要posh-git。