你如何删除已被推送的Git标签?
#1楼
如果要删除远程标记v0.1.0
,并且远程是origin
,那么只需:
git push origin :refs/tags/v0.1.0
如果您还需要在本地删除标记:
git tag -d v0.1.0
请参阅Adam Franco对Git不寻常的解释的解释:
删除语法。
#2楼
更简单的方法是
git push --delete origin YOUR_TAG_NAME
在这种情况下,IMO前缀冒号语法有点奇怪
#3楼
其他答案指出了如何实现这一点,但你应该记住后果,因为这是一个远程存储库。
在On Retagging部分中的git tag手册页有一个很好的解释,说明如何礼貌地通知远程repo的其他用户有关更改。 他们甚至提供了一个方便的公告模板,用于沟通其他人应该如何获得更改。
#4楼
删除所有本地标记并获取远程标记列表 :
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
#5楼
要从远程存储库中删除标记:
git push --delete origin TAGNAME
您可能还想在本地删除标记:
git tag -d TAGNAME
#6楼
如果您在Git存储库中创建了一个名为release01
的标记,则可以通过执行以下操作将其从存储库中删除:
git tag -d release01
git push origin :refs/tags/release01
要从Mercurial存储库中删除一个:
hg tag --remove featurefoo
请参考https://confluence.atlassian.com/pages/viewpage.action?pageId=282175551
#7楼
请注意,如果您有一个名为远程标记的远程分支,则这些命令是不明确的:
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>'
#8楼
从您的终端,执行以下操作:
git fetch
git tags
git tag -d {tag-name}
git push origin :refs/tags/{tag-name}