Git教程笔记(五·标签管理)

发布一个版本时,我们通常先在版本库中打一个标签,这样,就唯一确定了打标签时刻的版本。将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来。其实它就是指向某个commit的指针(跟分支很像对不对?但是分支可以移动,标签不能移动。

内容和命令行概览:

git tag #查看所有标签

git tag <tag name> #加标签

git log --pretty=oneline --abbrev-commit #找到历史提交的commit ID

git tag <tag name> <commit ID> #对某个commit打标签

git tag -a v0.1 -m "version 0.1 released" 3628164
#还可以创建带有说明的标签,用-a指定标签名,-m指定说明文字

git tag -d <tag name> #删除某个标签

git push origin <tag name> #将某个标签推送到远程

git push origin --tags #一次性推送全部的标签到远程

git push origin :refs/tags/<tag name> #在远程删除

创建标签

  1. 切换到要打标签的分支上
  2. git tag <tag name>加标签,然后可以用git tag查看所有标签,如下:
VectorLu:Diary Vector$ git branch
 * dev
  master
VectorLu:Diary Vector$ git checkout master
Switched to branch 'master'
Your branch is up-to-date with 'origin/master'.
VectorLu:Diary Vector$ git tag v1.1
VectorLu:Diary Vector$ git tag
v1.0
v1.1

默认标签打在最新提交的commit上。如果忘了打标签,比如,现在已经是周五了,但应该在周一打的标签没有打,怎么办?

方法是找到历史提交的commit id,然后打上就可以了,比如:

$ git log --pretty=oneline --abbrev-commit
6a5819e merged bug fix 101
cc17032 fix bug 101
7825a50 merge with no-ff
6224937 add merge
59bc1cb conflict fixed
400b400 & simple
75a857c AND simple
fec145a branch testd
17efd8 remove test.txt
...

如果要对add merge 这次commit打标签,它对应的commit ID是6224937,所以

git tag v0.9 6224937

再用git tag查看tag信息

$ git tag
v0.9
v1.0

tag不是按时间顺序,而是按字母排序。可以用git show <tagname>来查看标签信息

查看标签信息

还可以创建带有说明的标签用-a指定标签名,-m指定说明文字

git tag -a v0.1 -m "version 0.1 released" 3628164

暂时对gpg不了解,跳过用-s私钥签名一个标签

小结

  1. 命令git tag <name>用于新建一个标签,默认为HEAD,也可以指定一个commit id;
  2. git tag -a <tagname> -m "blablabla..."可以指定标签信息;
  3. git tag -s <tagname> -m "blablabla..."可以用PGP签名标签;
  4. 命令git tag可以查看所有标签。

标签操作

创建的标签不会自动推送到远程,故打错的标签可以只用在本地删除。例如:

git tag -d v1.0

推送某个标签到远程

git push origin v1.0

一次性推送全部的标签到远程

git push origin --tags

如果标签已经推送到远程,需要删除就相较麻烦一些。先在本地删除tag,然后,在远程删除,命令也是push,格式如下:

git push origin :refs/tags/v0.9

小结:

  1. 命令git push origin <tagname>可以推送一个本地标签;
  2. 命令git push origin --tags可以推送全部未推送过的本地标签;
  3. 命令git tag -d <tagname>可以删除一个本地标签;
  4. 命令git push origin :refs/tags/<tagname>可以删除一个远程标签
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容