如何删除已推送的Git标记?


当前回答

如果您使用SourceTree(一个很棒的Git GUI),那么您可以通过执行以下操作在不使用命令行的情况下轻松完成此操作:

在SourceTree中打开存储库选择并展开左侧的“标签”选项卡右键单击要删除的标记选择“删除YOUR_TAG_NAME”在验证窗口中,选择“从远程设备删除标记”

YOUR_TAG_NAME现在将从您的本地存储库和所有远程设备中删除,无论是GitHub、BitBucket,还是您列为该存储库远程设备的任何地方。

此外,如果您在本地删除了一个标记,但没有在远程源上删除,并且您想在任何地方删除它,那么只需创建一个新标记,该标记具有相同的名称,并在与源相同的提交时附加。然后,重复上述步骤删除所有位置。

其他回答

如果您创建了一个以#字符开头的标记,例如#ST002,您可能会发现无法使用正常模式删除。即

git tag -d #STOO2

不会删除标记,而是将其包装为字符串文字

git tag -d "#ST002" or git tag -d '#ST002'

这将使其被删除。希望它能帮助那些错误使用#来写标签名的人。

对于乌龟数字用户,在数百个标记的范围内,您可以使用UI一次删除多个标记,但UI隐藏在上下文菜单下。

从资源管理器窗口右键单击->浏览引用->右键单击ref/remotes/name->选择“删除远程标记”

看见https://tortoisegit.org/docs/tortoisegit/tgit-dug-browse-ref.html

如果您正在使用PowerShell,并且希望删除其中的一部分:

# Local tags:
git tag -l | foreach { git tag -d $_ }

# Remote tags:
git tag -l | foreach { git push --delete origin $_ }

当然,您也可以在删除之前过滤它们:

git tag -l | Where-Object { $_ -like "build-*" } | foreach { git tag -d $_ }

删除所有本地标记并获取远程标记列表:

git tag -l | xargs git tag -d
git fetch

删除所有远程标记

git tag -l | xargs -n 1 git push --delete origin

清理本地标记

git tag -l | xargs git tag -d

要从远程存储库中删除标记,请执行以下操作:

git push --delete origin TAGNAME

您可能还想在本地删除标记:

git tag -d TAGNAME