如何删除已推送的Git标记?
当前回答
这两个步骤效果很好:
# 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
其他回答
如果您有一个远程标签v0.1.0要删除,并且您的远程标签是源,那么只需:
git push origin :refs/tags/v0.1.0
如果您还需要在本地删除标记:
git tag -d v0.1.0
有关Git异常的解释,请参见Adam Franco的回答:删除语法。
您可以将“空”引用推送到远程标记名:
git push origin :tagname
或者,更明确地说,使用--delete选项(如果git版本早于1.8.0,则使用-d):
git push --delete origin tagname
注意,git具有标记名称空间和分支名称空间,因此您可以对分支和标记使用相同的名称。如果要确保不会意外删除分支而不是标记,可以指定full ref,该ref将永远不会删除分支:
git push origin :refs/tags/tagname
如果还需要删除本地标记,请使用:
git tag --delete tagname
出身背景
将分支、标记或其他引用推送到远程存储库涉及指定“哪个repo、哪个源、哪个目标?”
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
通过省略源ref(冒号之前的部分),可以将“nothing”推送到目标,删除远程端的ref。
这里已经有很多很好的答案,但如果您需要删除所有标记,可以使用以下使用PowerShell的命令行:
foreach($tag in(git tag)){git tag-d$tag.Trim();git push origin:refs/tags/$tag}
在这里,我们得到所有标签的列表,删除每个本地标签,然后删除远程标签(在GitHub上测试)。
要删除远程存储库上的标记,可以使用
git push <remote> :refs/tags/<tagname>
解释上述内容的方法是将其读取为空值,即冒号被推送到远程标记名称之前的值。
这对我有用
git push --force origin refs/tags/<tag_name>:refs/tags/<tag_name>
推荐文章
- 当我试图推到原点时,为什么Git告诉我“没有这样的远程‘原点’”?
- 如何从远程分支中挑选?
- 如何查看一个分支中的哪些提交不在另一个分支中?
- 如何取消在github上的拉请求?
- HEAD和master的区别
- GIT克隆在windows中跨本地文件系统回购
- RPC失败;卷度传输已关闭,剩余未完成的读取数据
- 我应该在.gitignore文件中添加Django迁移文件吗?
- 错误:您对以下文件的本地更改将被签出覆盖
- Git rebase—即使所有合并冲突都已解决,仍然会继续报错
- 在Git中,我如何知道我的当前版本是什么?
- 跟踪所有远程git分支作为本地分支
- 自定义SSH端口上的Git
- git如何显示不存在于.gitignore中的未跟踪文件
- Git错误:遇到7个文件应该是指针,但不是