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