在 git 中,我如何删除除最新标签之外的所有标签(本地和远程)
In git how can I delete all tags(local and remote) except the latest one
我想删除我的 git 存储库中除最新标签外的所有标签(本地和远程)。我已阅读有关删除所有标签的帖子,但找不到有关选择性删除它们的信息,即删除除最新标签之外的所有标签
我认为 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
}
不知何故,我在 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
要在本地删除所有标签(即使是 Windows):
git tag -d `git tag | grep -E '.'`
我找到了解决方案 here。
我想删除我的 git 存储库中除最新标签外的所有标签(本地和远程)。我已阅读有关删除所有标签的帖子,但找不到有关选择性删除它们的信息,即删除除最新标签之外的所有标签
我认为 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
}
不知何故,我在 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
要在本地删除所有标签(即使是 Windows):
git tag -d `git tag | grep -E '.'`
我找到了解决方案 here。