我该如何删除已经推送的 Git 标签?
你可以将一个“空”引用推送到远程标签名称:
git push origin :tagname
或者更加表达清晰,使用--delete
选项(如果你的git版本早于1.8.0,则为-d
):
git push --delete origin tagname
请注意,git具有标签命名空间和分支命名空间,因此您可以为分支和标签使用相同的名称。如果您想确保不会意外删除分支而不是标签,则可以指定完整引用,这将永远不会删除分支:
git push origin :refs/tags/tagname
如果你需要同时删除本地标签,使用以下操作:
git tag --delete tagname
将分支、标签或其他引用推送到远程仓库涉及指定“哪个仓库,什么来源,什么目的地?”。
git push remote-repo 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
省略源引用(冒号前面的部分)会将“空值”推送到目标,从而删除远程端的引用。
一种更简单的方法是
git push --delete origin YOUR_TAG_NAME
在我看来,在这种情况下使用冒号语法前缀有点奇怪。
refs/tags/
,例如:refs/tags/v2.3.1
。请参考以下翻译:@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
查看Adam Franco的答案,了解Git中用于删除的不寻常的:
语法的解释。
fatal: remote part of refspec is not a valid name in :/refs/tags/0.0.1
的错误信息。 - Chaim Eliyah:tagname
即可。 - Asclepius删除所有本地标签,并获取远程标签列表:
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 2.31+(2021年第一季度)。
"git push $there --delete
"(man)应该被诊断为错误,但转换为匹配推送,这已在Git 2.31(2021年第一季度)中得到修正。
请参见20e4164提交记录(2021年2月23日),作者为Junio C Hamano(gitster
)。
(合并者为Junio C Hamano -- gitster
--于1400458提交记录,2021年2月25日)
push
: 不要将--delete ''
转换为匹配推送发现者:Tilman Vogel
当我们将语法糖"git push remote --delete
"(手册)添加到" git push
"(手册) 作为规范的git push remote
(手册) 的同义词时,存在一个问题:我们没有仔细确认<ref>
不为空。该语法糖在 f517f1f(“builtin-push
: add
(手册) --delete
作为语法糖,用于表示“:foo””,2009-12-30,Git v1.7.0-rc0 -- 合并)中被引入。
在您的终端中,执行以下操作:
git fetch
git tag
git tag -d {tag-name}
git push origin :refs/tags/{tag-name}
现在前往Github.com并刷新页面,它们就会消失。
这两个步骤运行良好:
# 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
git push --delete origin TAGNAME
您可能还希望在本地删除该标记:
git tag -d TAGNAME
git push --delete origin TAGNAME && git tag -d TAGNAME
- sakurashinken
git push --delete origin tag1 tag2
。对于本地标签的删除同样有效,使用命令git tag -d tag1 tag2
。 - Dmitrygit tag -d \
git tag`可以删除所有本地标签。如果你已经把远程标签拉到本地,那么通过运行命令
git push --delete origin `git tag``同样可以删除所有远程标签。在测试环境中这非常方便。 - DarkFranX