Git标签

komantao 2020-01-30 2020-01-30 字数 1200 阅读量


Git可以给历史中的某一个提交打上标签(tag),以示重要。标签,是一个指向某个版本的指针,类似于分支。分支是最新版本的别名,标签是某个版本的别名。

使用标签,是因为版本号(哈希值)的字符串不友好,不方便记忆。标签语义化,对开发人员友好,方便提取附注的开发信息。

标签的命名遵循一套语义化版本控制规范(Semantic Versioning)。

版本格式:主版本号.次版本号.修订号,先行版本号及版本编译信息可以加到主版本号.次版本号.修订号的后面,作为延伸。版本号递增规则如下:

  1. 主版本号:当你做了不兼容的API修改
  2. 次版本号:当你做了向下兼容的功能性新增
  3. 修订号:当你做了向下兼容的问题修正

一、标签命令

1、查看标签

输入git tag,以字母顺序列出标签;它们出现的顺序并不重要。

$ git tag
v0.1
v1.3

可以使用特定模式查找标签:

$ git tag -l 'v1.8.5*'     # 模糊匹配包含v1.8.5字符的标签
v1.8.5
v1.8.5-rc0
v1.8.5-rc1
v1.8.5-rc2
v1.8.5.1
v1.8.5.2
v1.8.5.3

2、创建标签

Git的标签类型主要有:

  • 附注标签(annotated)

    附注标签是存储在Git数据库中的一个完整对象。它们可以被校验;包含打标签者的名字、电子邮件地址、日期时间、标签信息;并且可以使用GNU Privacy Guard(GPG)签名与验证。

    建议创建附注标签,这样就可以拥有以上所有信息;若只是想使用一个临时标签,或者因为某些原因不想要保存那些信息,使用轻量标签。

    使用-a(带备注)或-s(带PGP签名)选项运行git tag命令创建附注标签:

    git tag -a 标签名 -m "标签备注"
    

    使用git show 标签名,查看标签信息与对应的提交信息:

    /111 (master)
    $ git show v1.4
    tag v1.4
    Tagger: xxx <xxx@xxx.com>
    Date:   Fri Feb 21 15:22:48 2020 +0800
      
    my version 1.4
      
    commit e7ef745a7aa99feac35084858cb688fa37ce6975 (HEAD -> master, tag: v1.4)
    Author: xxx <xxx@xxx.com>
    Date:   Fri Feb 21 10:52:37 2020 +0800
      
        123
      
    diff --git a/new.txt b/new.txt
    index 592d2d3..9ade9da 100644
    --- a/new.txt
    +++ b/new.txt
    @@ -3,3 +3,4 @@
     333
     aaa
     bbb
    +123
    
  • 轻量标签(lightweight)

    轻量标签很像一个只读的分支,它只是一个特定提交的引用。

    轻量标签,本质上是将提交校验和存储到一个文件中,没有保存任何其他信息。

    创建轻量标签,不需要使用-a-s-m选项,只需要提供标签名字:

    git tag 标签名
    

    使用git show 标签名,只能查看提交信息。

后期打标签(对之前的指定提交打标签):

git tag -a 标签名 -m "标签备注" commit_id  # 缺省commit_id时,默认对最新版本打标签

3、 共享标签

默认情况下,git push命令不会传送标签到远程仓库服务器上。在创建完标签后,必须显式地推送标签到共享服务器上,这个过程就像共享远程分支一样。

  • 推送指定分支:运行git push origin 标签名
  • 一次性推送多个标签:运行git push origin --tags

4、删除标签

  • 删除本地仓库上的标签,运行 git tag -d 标签名 命令
  • 删除远程仓库上的标签,
    • 首先运行 git tag -d 标签名 命令删除本地仓库上的标签
    • 然后,运行git push <remote> :refs/tags/<tagname>更新远程仓库,将空白标签推送到远程仓库,等同于删除远程标签

5、检出标签

若想查看某个标签所指向的文件版本,可以使用git checkout 标签名命令,将进入“detacthed HEAD”状态。

感谢您的赞赏支持:

Copyright © 2020 komantao. All Rights Reserved.