git学习日志-标签

git也可以像svn一样打标签,以此来标记发布节点,以示重要性。
对标签的操作,一般包括:

1. 列出标签
2. 创建标签
3. 删除标签
4. 检出标签

一、列出标签

执行git tag命令,就可以看到当前仓库中已经打过的标签。

查看标签

注意: 这个命令会以字母顺序列出标签。

也可以加上-l--list选项,那就是按照通配符列出标签。
例:
执行git tag -l "v1.0*"

按照通配符查找标签

二、创建标签

git支持两种标签:轻量标签(lightweight)、附注标签(annotated)

  • 轻量标签: 像是一个不会改变的分支,它只是某个特定提交的引用。
  • 附注标签: 是存储在git数据库中的一个完整对象,它们是可以被校验的,包含:打标签者的名字、电邮、日期,标签信息(使用GPG签名并验证)

注意: 鉴于附注标签包含的信息多,因此建议使用附注标签。

此外,git也支持 补打标签共享标签

  • 补打标签: 对以往的提交打标签;
  • 共享标签: 像共享远程分支一样,将标签推送到远程服务器上,共享该标签。

(一)轻量标签

轻量标签的本质是将提交校验和存储到一个文件中,不保存其他任何信息。
创建轻量标签时,只需要执行git tag 命令即可,后边不加任何的选项。
例:
执行git tag v1.0.0-lw命令,结果显示如下:

打轻量标签

(二)附注标签

创建附注标签时,需要加上-a选项。同时也需要加上-m选项,这是为标签添加注释,这条注释会存储再标签中,如果没有为附注标签指定一条信息的话,git会启动编辑器要求你输入信息。
例:
执行git tag -a v1.0.1 -m "附注标签1.0.1"
结果如下:

打附注标签

输出显示了打标签者的信息,打标签的日期,附注信息,具体的提交信息。

(三)补打标签

也可以对以前的提交打标签,假如,我希望对以前某次提交打个标签,那么可以先查找到那次提交的校验和,然后执行git tag -a <检验和字符串>命令。
例:
希望对下图第二行的提交打标签,

查看历史

执行git tag -a v1.0.2 7c1bdc8f7b14caa43c93bfcf0286eebf07da755e命令,结果如下:

对以往提交打标签

对以往提交打标签,也就是要在那个提交上打标签,需要在命令的末尾指定提交的校验和(或部分校验和)

(四)共享标签

默认情况下,通过git push命令不会将标签推送到远程仓库上,必须使用git push origin 命令才行。
如果希望一次推送多个标签的话,需要带上--tags选项。
例:
git push origin --tags

注意: 使用git push --tags命令推送标签,并不会区分轻量标签和附注标签。


三、删除标签

删除标签分为两种情况:

  • 删除本地仓库上的标签
  • 删除远程仓库上的标签

(一)删除本地仓库的标签

删除本地仓库的标签,可以使用git tag -d 命令。
例:
删除v1.0.1标签,可以执行git tag -d v1.0.1命令。

删除本地标签

注意: 删除本地仓库中的标签,不会删除掉远程仓库中的标签。

(二)删除远程仓库的标签

删除远程仓库的标签,有两种方式。

  1. 执行git push :refs/tags/命令
  2. 执行git push --delete 命令

第一种命令的含义是,将冒号前面的空值推送到远程标签名,从而高效地删除它。


四、检出标签

如果希望查看某个标签指向的文件版本,可以使用git checkout命令。
例:
执行git checkout v1.0.2命令,展示结果如下:

检出标签

git会提示,你正处于“分离头指针(detached HEAD)”状态。在这个状态下,如果我做了某些更改,然后提交了它们,那么标签不会发生变化,但是我的新提交将不属于任何分支,并且将无法访问,除非通过确切的提交哈希才能访问。
所以,当我们进行更改后,比如我要修改旧版本中的错误,那么我通常需要创建一个新分支:

git checkout -b version1.0.2 v1.0.2
检出为新分支

如果在这进行了一次提交,那么version1.0.2分支就会因为这个改动向前移动,此时它和v1.0.2会有不同,这是需要注意的一点。

你可能感兴趣的:(git学习日志-标签)