4. 标签管理
什么是标签
和其他 VCS 一样,Git 也支持给仓库中某个提交打标签,以示重要。在工作中比较有代表性的用途是用来标记发布节点。在本节中,你将会学习如何列出已有的标签、 如何创建和删除新的标签、以及不同类型的标签分别是什么。
查看标签
查看标签非常简单,只需要运行 git tag
就可以了。
# 查看本地标签
git tag
# 查看远程标签
git ls-remote --tags
如果你本地的项目标签比较多,还可以使用 --list
或 -l
参数来搜索指定的,比如下面的命令,可以查看所有以 v1.0 开头的标签。
-l
和--list
作用完全一样,-l
是--list
的缩写
git tag -l "v1.0*"
git tag --list "v1.0*"
查看远程标签时没有内置的参数用来过滤,不过我们可以使用 grep
来进行过滤输出的结果
# 只列表远程包含req的标签
git ls-remote --tags | grep req
创建标签
Git 支持两种标签: 轻量标签(lightweight)和附注标签(annotated)。
轻量标签
轻量标签很像一个不会改变的分支——它只是某个特定提交的引用。如果使用 git show
查看轻量标签,只会输入创建标签时的提交信息。
创建轻量标签非常简单,只需要在 git tag
后面跟标签名就可以。
git tag 标签名
附注标签
附注标签是存储在 Git 数据库中的一个完整对象,它们是可以被校验的,其中包含打标签者的名字、电子邮件地址、日期时间, 此外还有一个标签信息,并且可以使用 GNU Privacy Guard (GPG) 签名并验证。 通常会建议创建附注标签,这样你可以拥有以上所有信息。但是如果你只是想用一个临时的标签,或者因为某些原因不想要保存这些信息,那么也可以用轻量标签。
# 创建一个未签名的附注标签
git tag -a 标签名 -m 提交信息
# 使用默认键创建签名附注标签
git tag -s 标签名 -m 提交信息
# 使用指定的键创建签名的附注标签
git tag -u 键 标签名 -m 提交信息
推送标签到远程
默认情况下, git push
命令并不会传送标签到远程仓库服务器上。 在创建完标签后你必须显式地推送标签到共享服务器上。这个过程就像共享远程分支一样,可以使用下面的命令把标签推送到远程:
默认情况下远程名一般是
origin
# 推送指定标签到指定远程服务器
git push 远程名 标签名。
# 推送全部标签到指定远程服务器
git push 远程名 --tags
删除标签
使用下面的命令可以删除本地标签
git tag -d 标签名
使用上面的命令只会删除本地标签,如果还需要删除本地标签可以使用下面的命令。
# 本地删除以后同步到远程服务器
git push 远程名 :refs/tags/标签名
# 直接删除远程标签
git push 远程名 -d 标签名
检出标签
检出标签和检出分支完全一样,也是使用 git checkout
命令,具体用法请参考Git 进阶教程-3-分支管理