天天看点

git基础(7)--打标签

Git 可以给历史中的某一个提交打上标签,以示重要。

人们会使用这个功能来标记发布结点(v1.0 等等)。

1、列出标签

1)在 Git 中列出已有的标签是非常简单直观的。

git tag
           

这个命令以字母顺序列出标签;但是它们出现的顺序并不重要

2)可以使用特定的模式查找

git tag -l 'v1.1*'
           

2、创建标签

Git 使用两种主要类型的标签:轻量标签(lightweight)与附注标签(annotated)。

1)轻量标签:很像一个不会改变的分支 - 它只是一个特定提交的引用。

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

3、附注标签

在 Git 中创建一个附注标签是很简单的。 最简单的方式是当你在运行 tag 命令时指定 -a 选项:

git tag -a v1.4
           

通过使用 git show 命令可以看到标签信息与对应的提交信息:

git show v1.4
           

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

4、轻量标签

 轻量标签本质上是将提交校验和存储到一个文件中 - 没有保存任何其他信息。 创建轻量标签,不需要使用 -a、-s 或 -m 选项,只需要提供标签名字:

git tag bug-110
           

如果在标签上运行 git show,你不会看到额外的标签信息。 命令只会显示出提交信息:

git show bug-110
           

5、后期打标签

你也可以对过去的提交打标签。

git log --pretty=oneline
           

显示提交的历史信息

要在那个提交上打标签,你需要在命令的末尾指定提交的校验和(或部分校验和)

git tag -a v1.3 46e4466d4f9b96bf4eebf50de86c40259c8da34f
           

6、共享标签

默认情况下,git push 命令并不会传送标签到远程仓库服务器上。

在创建完标签后你必须显式地推送标签到共享服务器上。 

git push origin [tagname] 
//如:
git push origin v1.5
           

一次性推送很多标签,也可以使用带有 --tags 选项的 git push 命令。这将会把所有不在远程仓库服务器上的标签全部传送到那里

git push origin --tags
           

当其他人从仓库中克隆或拉取,他们也能得到你的那些标签

7、删除标签

1)删除掉你本地仓库上的标签,可以使用命令 git tag -d <tagname>

git tag -d bug-110 //可以使用下面的命令删除掉一个轻量级标签

2)上述命令并不会从任何远程仓库中移除这个标签,你必须使用 git push <remote> :refs/tags/<tagname> 来更新你的远程仓库:

git push origin :refs/tags/bug-110
           

8、检出标签

查看某个标签所指向的文件版本,可以使用 git checkout 命令,这会使你的仓库处于“分离头指针(detacthed HEAD)”状态——这个状态有些不好的副作用:

git checkout 2.0.0
           

在“分离头指针”状态下,如果你做了某些更改然后提交它们,标签不会发生变化,但你的新提交将不属于任何分支,并且将无法访问,除非确切的提交哈希。

如果你需要进行更改——比如说你正在修复旧版本的错误——这通常需要创建一个新分支

git checkout -b version2 v2.0.0