如何删除已推送的Git标记?
当前回答
这里已经有很多很好的答案,但如果您需要删除所有标记,可以使用以下使用PowerShell的命令行:
foreach($tag in(git tag)){git tag-d$tag.Trim();git push origin:refs/tags/$tag}
在这里,我们得到所有标签的列表,删除每个本地标签,然后删除远程标签(在GitHub上测试)。
其他回答
git tag -d your_tag_name
git push origin :refs/tags/your_tag_name
第一行从本地回购中删除your_tag_name,第二行从远程回购中删除您的_tag_name。
对于使用GitHub的人来说,还需要一个步骤:丢弃草稿。
如果您创建了一个以#字符开头的标记,例如#ST002,您可能会发现无法使用正常模式删除。即
git tag -d #STOO2
不会删除标记,而是将其包装为字符串文字
git tag -d "#ST002" or git tag -d '#ST002'
这将使其被删除。希望它能帮助那些错误使用#来写标签名的人。
请注意,如果您有一个名为远程标记的远程分支,那么这些命令是不明确的:
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 <remote> :refs/tags/<tagname>
解释上述内容的方法是将其读取为空值,即冒号被推送到远程标记名称之前的值。
更直接的方法是
git push --delete origin YOUR_TAG_NAME
在这种情况下,IMO前缀冒号语法有点奇怪
推荐文章
- 在单个文件中重新启动/撤消冲突解决方案
- Visual Studio代码如何解决合并冲突与git?
- 无法推送到远程分支,无法解析到分支
- Git:如何将数据库重置为特定的提交?
- 如何在合并期间使用Git和命令行保存本地文件或远程文件?
- 能够用一个命令推到所有git遥控器?
- 重新基于Git合并提交
- 忽略已经签入目录的内容?
- 如何从windows cmd保存git提交消息?
- (Mac) -bash: __git_ps1:命令未找到
- 如何删除多个已删除的文件在Git仓库
- 使用vimdiff查看所有' git diff '
- 如何拉特定的目录与git
- 本地存储库中的文件与源文件之间的差异
- 将Git存储库内容移动到另一个存储库,保存历史记录