0


如何删除远程标签?

问题描述:

如何删除已经推送的 Git 标签?

解决方案1:

与HuntsBot一起,探索全球自由职业机会–huntsbot.com

您可以推送对远程标记名称的“空”引用:

git push origin :tagname

或者,更明确地说,使用 --delete 选项(如果您的 git 版本早于 1.8.0,则使用 -d):

git push --delete origin tagname

请注意,git 具有标签命名空间和分支命名空间,因此您可以为分支和标签使用相同的名称。如果要确保不会意外删除分支而不是标记,可以指定永远不会删除分支的完整 ref:

git push origin :refs/tags/tagname

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

git tag --delete tagname

背景

将分支、标签或其他引用推送到远程存储库涉及指定“哪个存储库、什么源、什么目标?”

git push remote-repo source-ref:destination-ref

将 master 分支推送到源的 master 分支的真实示例是:

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

通过省略源引用(冒号之前的部分),您将“无”推送到目标,删除远程端的引用。

+1 用于回答问题和解释一般情况,并详细说明未删节语法的含义
万一有人想知道如何一次删除多个标签,您可以使用空格简单地列出它们,例如 git push --delete origin tag1 tag2。同样适用于本地标签删除 git tag -d tag1 tag2
如果标签名称与分支名称冲突,您最终可能会删除您的分支。哈哈。看第二个答案 - 它更生态
有趣的是,git tag -d 

git tag

将删除所有本地标签。假设您在本地提取远程标签,同样适用于 git push --delete origin

git tag

。这在测试环境中很方便。
事实上,我们获得了 6700 多票,而且它如此复杂,这可能意味着它可以重新设计。

解决方案2:

huntsbot.com – 程序员副业首选,一站式外包任务、远程工作、创意产品分享订阅平台。

更直接的方法是

git push --delete origin YOUR_TAG_NAME

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

我认为这是正确的方法......其他语法对我来说更像是黑客。
这行得通。一个补充:如果你有一个分支和一个同名的标签,你可以在你的标签名称前加上单词 tag 以确保你得到的是标签,而不是分支。
@andypaxo 该命令采用的是 refspecs,正确的方法是在标签前加上 refs/tags/,如下所示:refs/tags/v2.3.1。
我以某种方式在远程服务器上创建了“坏”标签名称,它有特殊字符,所以我无法与之同步,所以只需根据您的建议将其删除: git push --delete origin "service---- 151" ,不能用intellij、不能用stash、不能用sourceTree来删除它。谢谢 !
对于那些在答案发布很久之后阅读这篇文章的人,当时(现在接受的)答案中没有此内容;后来这个答案的内容被(非常狭窄地)建议编辑到接受的内容中。这是堆栈溢出的“最佳答案上升到顶级系统”有点失败的那些奇怪的边缘案例之一,一方面我很高兴接受的答案具有正确的信息,因为大多数读者不会看过去的最佳答案,但我对我们如何到达这里并不感到兴奋......我希望未来的读者不会认为这个答案只是复制/粘贴。

解决方案3:

huntsbot.com洞察每一个产品背后的需求与收益,从而捕获灵感

如果您有要删除的远程标记 v0.1.0,而您的远程是 origin,那么只需:

git push origin :refs/tags/v0.1.0

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

git tag -d v0.1.0

有关 Git 用于删除的异常 : 语法的说明,请参阅 Adam Franco’s answer。

这也适用于 jgit。 :tag 速记不适用于 jgit
我得到了fatal: remote part of refspec is not a valid name in :/refs/tags/0.0.1 ...?
@ChaimEliyah 你有一个斜线,也许这是你的问题
更好的答案,因为如果您有一个分支和一个称为相同的标签,这也有效。
只有 :tagname 应该适用于远程删除。

解决方案4:

huntsbot.com全球7大洲远程工作机会,探索不一样的工作方式

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

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 fetch,删除远程,然后清理本地,效果很好!
慢,但最直接
但是,当另一个执行 git-push 时,将保留所有已删除的标签

解决方案5:

huntsbot.com提供全网独家一站式外包任务、远程工作、创意产品分享与订阅服务!

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

第一行从 local 存储库中删除 your_tag_name,第二行从 remote 存储库中删除 your_tag_name。

https://i.stack.imgur.com/IoCnD.jpg

解决方案6:

huntsbot.com汇聚了国内外优秀的初创产品创意,可按收入、分类等筛选,希望这些产品与实践经验能给您带来灵感。

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

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

现在去 Github.com 刷新一下,它们就消失了。

解决方案7:

保持自己快人一步,享受全网独家提供的一站式外包任务、远程工作、创意产品订阅服务–huntsbot.com

git push --delete origin $TAGNAME 是正确的方法(除了本地删除)。

但是:确保使用 Git 2.31。

“git push $there --delete”(man) 应该被诊断为错误,但却变成了匹配的推送,已在 Git 2.31(2021 年第一季度)中更正。

请参阅 Junio C Hamano (gitster) 的commit 20e4164(2021 年 2 月 23 日)。 (由 Junio C Hamano – gitster – 在 commit 1400458 中合并,2021 年 2 月 25 日)

push:不要将 --delete ‘’ 变成匹配的 push 通知者:Tilman Vogel

当我们添加语法糖 “git push remote --delete”(man) 到 “git push”(man) 作为规范 git push remote(man) 的同义词时:语法在 f517f1f (“builtin-push: add(man) --delete 作为 :foo” 的语法糖,2009-12-30,Git v1.7.0-rc0 – merge),我们没有足够小心以确保 不为空。盲目地将“–delete”重写为“:”意味着一个空字符串 会导致 refspec “:”,这是请求“匹配”推送的语法,它不会删除任何内容。更糟糕的是,如果有匹配的 ref 可以快进,即使用户觉得他们还没有准备好被推出,它们也会过早发布,这将是一场真正的灾难。

解决方案8:

huntsbot.com洞察每一个产品背后的需求与收益,从而捕获灵感

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

git push --delete origin TAGNAME

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

git tag -d TAGNAME
所以一条线来做这两个:git push --delete origin TAGNAME && git tag -d TAGNAME

解决方案9:

保持自己快人一步,享受全网独家提供的一站式外包任务、远程工作、创意产品订阅服务–huntsbot.com

删除本地标签“12345”

git tag -d 12345

删除远程标签“12345”(例如;GitHub 版本)

git push origin :refs/tags/12345

替代方法

git push --delete origin tagName
git tag -d tagName

https://i.stack.imgur.com/zTijy.png

解决方案10:

huntsbot.com高效搞钱,一站式跟进超10+任务平台外包需求

这两个步骤工作正常:

# delete local tag '1.0.0'
git tag -d 1.0.0

# delete remote tag '1.0.0'(eg,GitHub version too)
git push origin :refs/tags/1.0.0

解决方案11:

huntsbot.com高效搞钱,一站式跟进超10+任务平台外包需求

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

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

所以你必须使用这个命令来删除标签:

git push origin :refs/tags/

而这个删除分支:

git push origin :refs/heads/

如果没有,您将收到如下错误:

error: dst refspec  matches more than one.
error: failed topush some refs to ''
简明扼要。这篇文章与 MeganZhou 一起弹出,作为我们遇到问题的答案,分支名称和标记名称是相同的。我删除了本地标签并推送到 :refs/tags ,一切都很好。
原文链接:https://www.huntsbot.com/qa/ma7v/how-do-i-delete-a-remote-tag?lang=zh_CN

huntsbot.com提供全网独家一站式外包任务、远程工作、创意产品分享与订阅服务!

标签: git github

本文转载自: https://blog.csdn.net/kalman2019/article/details/128280804
版权归原作者 HuntsBot 所有, 如有侵权,请联系我们删除。

“如何删除远程标签?”的评论:

还没有评论