如果标签打错了,也可以删除:
$ git tag -d v0.1
Deleted tag 'v0.1' (was f15b0dd)
因为创建的标签都只存储在本地,不会自动推送到远程。所以,打错的标签可以在本地安全删除。
如果要推送某个标签到远程,使用命令git push origin <tagname>
:
$ git push origin v1.0
Total 0 (delta 0), reused 0 (delta 0)
To github.com:michaelliao/learngit.git
* [new tag] v1.0 -> v1.0
或者,一次性推送全部尚未推送到远程的本地标签:
$ git push origin --tags
Total 0 (delta 0), reused 0 (delta 0)
To github.com:michaelliao/learngit.git
* [new tag] v0.9 -> v0.9
如果标签已经推送到远程,要删除远程标签就麻烦一点,先从本地删除:
$ git tag -d v0.9
Deleted tag 'v0.9' (was f52c633)
然后,从远程删除。删除命令也是push,但是格式如下:
$ git push origin :refs/tags/v0.9
To github.com:michaelliao/learngit.git
- [deleted] v0.9
要看看是否真的从远程库删除了标签,可以登陆GitHub查看。
小结
命令
git push origin <tagname>
可以推送一个本地标签;命令
git push origin --tags
可以推送全部未推送过的本地标签;命令
git tag -d <tagname>
可以删除一个本地标签;命令
git push origin :refs/tags/<tagname>
可以删除一个远程标签。
git 删除本地模块标签的操作
git submodule foreach git tag -d 标签名
例如:git submodule foreach git tag -d v3.1.0
删除成功提示:
To http://XXXXXXXX_Master.git
- [deleted] v3.1.0
git 删除远程模块标签的操作
git submodule foreach git push origin :refs/tags/标签名 例如:git submodule foreach git push origin :refs/tags/v3.1.0 删除成功的提示: Entering 'XXXXXXXX' To http://XXXXXXXX.git - [deleted] v3.1.0 Entering 'XXXXXXXX' To http://XXXXXXXX.git - [deleted] v3.1.0
注意点:有时候,项目模块是不允许删除的,就会关于权限的一些error提示。只要到管理者哪里添加权限就可以了。