如何删除已推送的Git标记?
当前回答
这对我有用
git push --force origin refs/tags/<tag_name>:refs/tags/<tag_name>
其他回答
删除本地标记“12345”
git tag -d 12345
删除远程标记“12345”(例如,GitHub版本也是)
git push origin :refs/tags/12345
替代方法
git push --delete origin tagName
git tag -d tagName
删除所有本地标记并获取远程标记列表:
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
gitpush--delete origin$TAGNAME是正确的方法(除了本地删除之外)。
但是:确保使用Git 2.31+(2021第一季度)。
“git-push$there--delete”(man)本应被诊断为一个错误,但却变成了一个匹配的push,已使用git 2.31(2021第1季度)进行了更正。
参见Junio C Hamano(gitster)提交的20e4164(2021 2月23日)。(由Junio C Hamano——gitster——于2021 2月25日提交1400458合并)
push:不要将--delete“”转换为匹配的push通知人:Tilman Vogel
当我们将语法糖“git push remote--delete”(man)<ref>添加到“git推送”(man)中,作为标准git pushremote(man)的同义词:语法在f517f1f(“内置推送:add(man)--delete as syntax sugar for:foo”,2009-12-30,git v1.7.0-rc0--merge)中时,我们没有足够谨慎地确保<ref>不为空。盲目地将“--delete<ref>”重写为“:<ref>“意味着空字符串<ref>将导致refspec“:”,这是要求“匹配”推送的语法,但不删除任何内容。更糟糕的是,如果有匹配的引用可以快速转发,那么即使用户觉得它们还没有准备好推出,它们也会过早发布,这将是一场真正的灾难。
git tag -d your_tag_name
git push origin :refs/tags/your_tag_name
第一行从本地回购中删除your_tag_name,第二行从远程回购中删除您的_tag_name。
对于使用GitHub的人来说,还需要一个步骤:丢弃草稿。
请注意,如果您有一个名为远程标记的远程分支,那么这些命令是不明确的:
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添加?
- Rubymine:如何让Git忽略Rubymine创建的.idea文件
- Gitignore二进制文件,没有扩展名
- Git隐藏错误:Git隐藏弹出并最终与合并冲突
- 了解Git和GitHub的基础知识
- 没有。Git目录的Git克隆
- Git与Mercurial仓库的互操作性
- 忽略git中修改(但未提交)的文件?
- “git restore”命令是什么?“git restore”和“git reset”之间有什么区别?
- Git合并与强制覆盖
- Git拉另一个分支
- 在Bash命令提示符上添加git分支
- 如何更改Git日志日期格式
- git pull -rebase和git pull -ff-only之间的区别