打标签
git支持两种类型的标签:轻量标签与附注标签。
轻量标签是一个指向特定提交的引用,但是它不可被移动。
附注标签是一个在git数据库中的完整对象,它包含打标签者的名字、电子邮件地址、日期时间,并且是可以被校验的。
打一个轻量标签很容易,使用git tag <tagname>
即可:
$ git tag v0.0
git会给当前分支最近的提交对象打上v0.0
标签。
如果要给其他的提交对象打标签,需要写明提交对象SHA-1串。
打附注标签需要使用-a
选项,-m
选项可以填写标签描述:
$ git tag -a v1.0 -m "start a poetry" c36bdf6
上面的命令表示:在c36bdf6
上打一个附注标签,标签名是v1.0
,标签描述是start a poetry
。
查看标签
使用git tag
即可查看标签:
$ git tag
v0.0
v1.0
这表示我们目前有两个标签:v0.0
和v1.0
。
使用git show <tagname>
查看标签详细信息:
$ git show v0.0
commit c148ffd67da041fcfbd3e03388d4c6f24fd75255
Author: wm <1626364188g@gmail.com>
Date: Sat Jan 6 11:04:29 2018 +0800
i see water here
# 省略
$ git show v1.0
tag v1.0
Tagger: wm <1626364188g@gmail.com>
Date: Sat Jan 6 19:01:19 2018 +0800
start a poetry
commit c36bdf60681c48cc25b55247aceb47ddf22fe6f9
Author: wm <1626364188g@gmail.com>
Date: Sat Jan 6 10:42:05 2018 +0800
i see you there
其中v0.0
是轻量标签,v1.0
是附注标签。附注标签比轻量标签保存更多的信息。
推送标签
git push
默认不会推送标签,如果要推送标签,需要使用下面的命令:
$ git push origin v1.0
Username for 'https://github.com': mwanggh
Password for 'https://mwanggh@github.com':
Counting objects: 1, done.
Writing objects: 100% (1/1), 159 bytes | 0 bytes/s, done.
Total 1 (delta 0), reused 0 (delta 0)
To https://github.com/mwanggh/myFirstGit.git
* [new tag] v1.0 -> v1.0
上面的命令会将v1.0
标签推送到origin
。
如果要把所有未推送的标签都推送到远程,可以使用--tags
选项:
$ git push origin --tags
Username for 'https://github.com': mwanggh
Password for 'https://mwanggh@github.com':
Total 0 (delta 0), reused 0 (delta 0)
To https://github.com/mwanggh/myFirstGit.git
* [new tag] v0.0 -> v0.0
检出标签
标签并不能像分支那样移动,如果想要检出标签,可以将其检出到一条新分支上:
$ git checkout -b version2 v2.0.0
这条命令会新建一条version2
分支,它与v2.0.0
指向相同。
删除标签
本地删除标签很简单:
git tag -d v0.0
这条命令会删除v0.0
标签。
删除远程标签需要使用git push
命令:
$ git push origin :refs/tags/v0.0
这会删除远程的v0.0
标签。