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


当前回答

这里已经有很多很好的答案,但如果您需要删除所有标记,可以使用以下使用PowerShell的命令行:

foreach($tag in(git tag)){git tag-d$tag.Trim();git push origin:refs/tags/$tag}

在这里,我们得到所有标签的列表,删除每个本地标签,然后删除远程标签(在GitHub上测试)。

其他回答

请注意,如果您有一个名为远程标记的远程分支,那么这些命令是不明确的:

git push origin :tagname
git push --delete origin tagname

因此,必须使用此命令删除标记:

git push origin :refs/tags/<tag>

这一个删除分支:

git push origin :refs/heads/<branch>

如果没有,则会出现如下错误:

error: dst refspec <tagname> matches more than one.
error: failed to push some refs to '<repo>'

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

git push --delete origin TAGNAME

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

git tag -d TAGNAME

这对我有用

git push --force origin refs/tags/<tag_name>:refs/tags/<tag_name>

更直接的方法是

git push --delete origin YOUR_TAG_NAME

在这种情况下,IMO前缀冒号语法有点奇怪

我只是想分享我创建的别名,它做了同样的事情:

将以下内容添加到~/.gitconfig中

[alias]
    delete-tag = "!f() { \
            echo 'deleting tag' $1 'from remote/origin ausing command: git push --delete origin tagName;'; \
            git push --delete origin $1; \
            echo 'deleting tag' $1 'from local using command: git tag -d tagName;'; \
            git tag -d $1; \
        }; f"

用法如下:

-->git delete-tag v1.0-DeleteMe
deleting tag v1.0-DeleteMe from remote/origin ausing command: git push --delete origin tagName;
To https://github.com/jsticha/pafs
 - [deleted]             v1.0-DeleteMe
deleting tag v1.0-DeleteMe from local using command: git tag -d tagName;
Deleted tag 'v1.0-DeleteMe' (was 300d3ef22)