标签

大彬大约 2 分钟

标签

给历史的某个提交打标签,如标记发布节点(v1.0等)。

tag标签可以帮助我们回退到某个版本的代码,我们通过tag的名称即可回退,而不需要根据某个提冗长的commit ID来回退:

  • 查看本地tag:git tag
  • 新建tag:git tag -a v2.0 -m 'msg'
  • 推送指定tag至远程:git push origin v2.0
  • 推送本地所有tag至远程:git push origin --tags
  • 删除本地tag:git tag -d v2.0
  • 删除远程tag:git push origin --delete tag 2.0
  • 本地查看不同tag的代码:get checkout v1.0
  • 查看标签详情(包含commitId):git show v1.0
  • 回退到某个版本:git reset --hard commitId
  • 获取远程分支:git fetch origin tag V2.0

创建标签

Git 使用两种主要类型的标签:轻量标签(lightweight)与附注标签(annotated)。一个轻量标签很像一个不会改变的分支 - 它只是一个特定提交的引用。然而,附注标签是存储在 Git 数据库中的一个完整对象。 它们是可以被校验的;其中包含打标签者的名字、电子邮件地址、日期时间;还有一个标签信息;并且可以使用 GNU Privacy Guard (GPG)签名与验证。 通常建议创建附注标签。

创建的标签都只存储在本地,不会自动推送到远程。

附注标签

添加附注标签:

git tag -a v1.4 -m 'my version 1.4'

-m 选项指定标签的信息。

使用 git show v1.4 命令可以看到标签信息和对应的提交信息。

轻量标签

添加轻量标签:

git tag v1.4-tyson

此时运行 git show v1.4-tyson不会看到额外的标签信息,只显示提交信息。

推送标签

推送某个标签到远程,使用命令:

git push origin <tagname>

一次性推送全部尚未推送到远程的本地标签:

git push origin --tags

删除远程标签(先删除本地标签) :

git push origin :refs/tags/<tagname>

后期打标签

比如给下面的这个提交( modified readme.md )打标签: git tag -a v1.2 c1285b

$ git log --pretty=oneline
22fb43d9f59b983feb64ee69bd0658f37ea45db6 (HEAD -> master, tag: v1.4-tyson, tag: v1.4) add file note.md
aab2fda0b604dc295fc2bd5bfef14f3b8e3c5a98 add one line
c1285bcff4ef6b2aefdaf94eb9282fd4257621c6 modified readme.md
ba8e8a5fb932014b4aaf9ccd3163affb7699d475 renamed
d2ffb8c33978295aed189f5854857bc4e7b55358 add readme.md

共享标签

git push 命令并不会传送标签到远程仓库服务器上。在创建完标签后你必须显式地推送标签到共享服务器上:

git push origin v1.5

把所有不在远程仓库服务器上的标签全部传送到那里:

git push origin --tags

检出标签

如果你想要工作目录与仓库中特定的标签版本完全一样,可以使用 git checkout -b [branchname] [tagname] 在特定的标签上创建一个新分支:

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