如何删除已推送的Git标记?
当前回答
这对我有用
git push --force origin refs/tags/<tag_name>:refs/tags/<tag_name>
其他回答
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 push <remote> :refs/tags/<tagname>
解释上述内容的方法是将其读取为空值,即冒号被推送到远程标记名称之前的值。
如果您在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
删除所有本地标记并获取远程标记列表:
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
对于乌龟数字用户,在数百个标记的范围内,您可以使用UI一次删除多个标记,但UI隐藏在上下文菜单下。
从资源管理器窗口右键单击->浏览引用->右键单击ref/remotes/name->选择“删除远程标记”
看见https://tortoisegit.org/docs/tortoisegit/tgit-dug-browse-ref.html
推荐文章
- 为什么我需要显式地推一个新分支?
- 如何撤消最后的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之间的区别