题 如何删除git远程标签?


你如何删除已被推送的git标签?


2135
2018-03-29 23:41


起源




答案:


您只需要将“空”引用推送到远程标记名称:

git push origin :tagname

或者,更具表现力,使用 --delete 选项(或 -d 如果您的git版本低于1.8.0):

git push --delete origin tagname

如果您还需要删除本地标记,请使用:

git tag --delete tagname

背景

将分支,标记或其他引用推送到远程存储库涉及指定“推送何处,什么来源,什么目的地?”

git push where-to-push source-ref:destination-ref

将主分支推送到原始主分支的真实示例是:

git push origin refs/heads/master:refs/heads/master

由于默认路径,可以缩短为:

git push origin master:master

标签的工作方式相同:

git push origin refs/tags/release-1.0:refs/tags/release-1.0

这也可以缩短为:

git push origin release-1.0:release-1.0

通过省略源ref(冒号前的部分),将'nothing'推送到目标,删除远端的ref。


3520
2018-03-29 23:45



对。顺便说一句,这也适用于分支机构。 - Joost Diepenmaat
+1回答问题并解释一般情况,并详细说明未删节语法的含义 - Peter Host
并且万一有人想知道如何一次删除多个标签,你可以使用白色空间简单地列出它们,例如 git push --delete origin tag1 tag2。同样适用于本地标签删除 git tag -d tag1 tag2 - dVaffection
如果标签名称与分支名称冲突,您最终可能会删除分支。哈哈。看到第二个答案 - 它更具生态性 - zuba
@dVaffection我希望我读你的评论 之前 分别删除12个标签... - BadHorsie


更简单的方法是

git push --delete origin YOUR_TAG_NAME

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


246
2017-10-09 00:47



我认为这是正确的方法......其他语法看起来更像是黑客攻击。 - Luigi R. Viggiano
是的,这很简单而且有效。虽然我通过指定变量部分来澄清答案: git push --delete origin "TAGNAME",其中TAGNAME是原始标记的名称。 - Teemu Leisti
这很有效。一个补充:如果你有一个分支和一个同名的标签,你可以把这个词 tag在您的标记名称之前,以确保您获得标记,而不是分支。 - andypaxo
@andypaxo命令采用的是refspecs,正确的方法是为标记添加前缀 refs/tags/, 喜欢这个: refs/tags/v2.3.1。 - p3lim


如果你有一个远程标签 v0.1.0 删除,你的遥控器是 origin,然后简单地说:

git push origin :refs/tags/v0.1.0

如果您还需要在本地删除标记:

git tag -d v0.1.0

看到 亚当佛朗哥的答案 解释Git的异常 : 删除语法。


134
2017-07-21 16:14



这也适用于jgit。 :标签速记不适用于jgit - rynop
我有 fatal: remote part of refspec is not a valid name in :/refs/tags/0.0.1 ...? - Chaim Eliyah
@ChaimEliyah你有一个领先的斜线,也许这是你的问题 - Joffrey
更好的答案,因为如果你有一个分支和一个被称为相同的标签,这也有效。 - Erik A. Brandstadmoen


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

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

72
2018-04-02 02:26



如何从本地和远程存储库中删除所有标记。这就是我想要的,谢谢! - Jorge Orpinel
git fetch,删除远程,然后清理当地人,工作得很漂亮! - DiegoRBaquero
慢,但最直截了当 - Lucent Fox


要从远程存储库中删除标记:

git push --delete origin TAGNAME

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

git tag -d TAGNAME

26
2017-09-04 10:30





从您的终端,执行以下操作:

git fetch
git tags
git tag -d {tag-name}
git push origin :refs/tags/{tag-name}

现在去Github.com刷新,他们就消失了。


17
2018-06-27 13:23



git标签不是标签 - DSF


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

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>'

12
2018-05-05 17:28



简洁明了。这篇文章与MeganZhou一起弹出作为我们遇到问题的原因的答案,branchname和标记名是相同的。我删除了本地标签并推送到:refs / tags,一切都很好。 - rwheadon


如果您已创建一个名为的标记 release01 在Git存储库中,您可以通过执行以下操作将其从存储库中删除:

git tag -d release01 
git push origin :refs/tags/release01 

要从Mercurial存储库中删除一个:

hg tag --remove featurefoo

请参考 https://confluence.atlassian.com/pages/viewpage.action?pageId=282175551


8
2017-11-11 05:54