Git基础之tag功能

git的基础功能中有个打标签的功能。这功能其实非常有用,往往在线上发布时会用到。

tag作用

像其他版本控制系统(VCS)一样,Git 可以给历史中的某一个提交打上标签,以示重要。 比较有代表性的是人们会使用这个功能来标记发布结点(v1.0 等等)。
当你在线上发布最新的代码时,最好每次都打上一个tag,因为当这次发布的代码失败,有bug的时候,你可以快速checkout上次的稳定tag,
以实现代码的快速回滚,待你修复好新代码后,再重新发布,打上一个稳定的标记tag。
另外在一些场景也会用到打tag来实现持久化构建的功能。


列出标签

$ git tag
v0.1
v1.3

列出特定的标签:

$ git tag -l 'v1.8.5*'
v1.8.5
v1.8.5-rc0
v1.8.5-rc1
v1.8.5-rc2
v1.8.5-rc3
v1.8.5.1
v1.8.5.2
v1.8.5.3
v1.8.5.4
v1.8.5.5

创建标签

  • 轻量标签(lightweight),无标记信息:

    $ git tag v1.4-lw
    $ git tag
    v0.1
    v1.3
    v1.4
    v1.4-lw
    v1.5
    
    $ git show v1.4-lw
    commit ca82a6dff817ec66f44342007202690a93763949
    Author: Scott Chacon <schacon@gee-mail.com>
    Date:   Mon Mar 17 21:52:11 2008 -0700
    
        changed the version number
    
  • 附注标签(annotated)。

    $ git tag -a v1.4 -m 'my version 1.4'
    $ git tag
    v0.1
    v1.3
    v1.4
    
    $ git show v1.4
    tag v1.4
    Tagger: Ben Straub <ben@straub.cc>
    Date:   Sat May 3 20:19:12 2014 -0700
    
    my version 1.4
    
    commit ca82a6dff817ec66f44342007202690a93763949
    Author: Scott Chacon <schacon@gee-mail.com>
    Date:   Mon Mar 17 21:52:11 2008 -0700
    
        changed the version number
    

提交标签

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

//提交单个tag
$ git push origin v1.5
//提交全部tag
$ git push origin --tags

checkout标签

在 Git 中你并不能真的检出一个标签,因为它们并不能像分支一样来回移动。 如果你想要工作目录与仓库中特定的标签版本完全一样,可以使用 git checkout -b [branchname] [tagname] 在特定的标签上创建一个新分支:

$ git checkout -b version2 v2.0.0
Switched to a new branch 'version2'

在线上执行回滚的时候,用一个可用稳定的tag,创建一个新的临时分支,让该分支在线上先跑。然后再去修复master的代码,等待修复完,再重新把线上分支切回master,以实现快速代码回滚。

参考 :

https://git-scm.com/book/en/v2/Git-Basics-Tagging Git Basics - Tagging

听说你想请我喝下午茶?~