就像我们读书时遇到重要的内容要加个书签,以便随时查看该内容一样,给代码仓库打个标签,也可以随时切换到该标签对应的提交,从而获取该标签所对应的副本。
标签比较多用于发布程序时,或者做了重大修改可能导致兼容性问题时,这里标签可以起到很好的作用。
输入以下命令查看所有标签。
git tag
% git tag
v0.1
v1.0
该命令以字母顺序列出标签。如果仓库中标签很多,可以查看指定类型的标签:
% git tag -l 'v1.*'
v1.0
与查看分支一样,查看远端标签:
git branch -a
也可以查看标签对应的详细信息,这与创建的标签类型对应,下文介绍。
标签分为两种:轻量标签和附注标签。
轻量标签是一个特定提交的引用,与一个不会改变的分支类似。
附注标签是存储在Git中的一个完整对象,是可以被校验的。可以查询到打标签者的名字、邮件地址、日期、标签信息等。
如果只是创建一个临时的标签,可以使用轻量标签,一般建议使用附注标签。
如下命令创建附注标签:
git tag -a v1.0 -m '第一个稳定可用版本'
其中,-m 指定了将会保存在标签中的信息,如果没有在创建标签时指定,git会运行编辑器要求用户输入信息。
查看标签信息与对应的提交信息:
% git show v1.0
轻量标签本质上是将提交校验和存储到一个文件中,不会保存任何其他信息。
创建轻量标签极其简单,直接输入 git tag v0.2
即可,不需要任何参数后缀。
对轻量标签使用 git show
也只能查看到提交信息,没有额外信息。
可以在所有提交历史的某一次添加标签。
命令与前面类似,只需在最后加上某次提交的hash值,如:
$ git tag -a v1.2 863290234
本地创建的标签如果不推送,别人是看不到的,只能在本地使用。
默认情况下,git push
命令不会传送标签到远程仓库。必须显式地推送标签到服务器上,命令为:
git push origin [tagname]
如,git push origin v1.0
使用 --tags 参数可以一次推送多个标签。
其他人可以使用该tag,如果想要本地目录与仓库中指定的标签版本完全一样,执行如下命令:
git checkout -b mytest v1.0
就可以在v1.0的标签上创建一个新分支。使用该分支编译即可。
与删除本地分支类似,本地删除标签时,使用-d 参数即可:
git tag -d v1.0
本地删除后,再删除远端tag(推送一个空的tag到远端tag,用空值覆盖原值):
git push origin :refs/tags/v1.0
也可以使用 --delete 参数:
git push origin --delete tag v1.0
注:对于默认分支,可能会由于权限问题删除失败。