前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >快速掌握Git Tag

快速掌握Git Tag

作者头像
Karl Du
发布2023-10-20 18:56:07
1780
发布2023-10-20 18:56:07
举报
文章被收录于专栏:Web开发之路Web开发之路

就像大多数版本控制系统一样,Git可以把特定的历史版本标记为重要版本。其典型应用场景是标出发布版本(v1.0等)。在本节中,你可以学到如何列举所有可用的标签,如何创建新的标签以及不同标签之间的差异

列举标签

Git中,列举可用表的操作很简单,只需要键入git tag即可:

代码语言:javascript
复制
$ git tag
v1.0.0
v1.1.0
v1.2.0
v1.3.0
v1.4.0
v2.0
v2.1
v2.2
v2.3
v2.3.1
v2.3.2
v2.3.3

这条命令会按照字母顺序列出所有的标签。列举的顺序先后和标签的重要性无关

你可以按照某个特定匹配模式搜索标签。举例来说,Git的源代码仓库包括超过500个标签。如果你只想要看到1.8.5系列的标签版本,可以执行以下命令

代码语言:javascript
复制
$ 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

创建标签

Git使用的标签主要有两种类型:轻量(lightweight)标签和注释(annotated)标签

轻量标签很像是一个不变的分支——它只是一个指向某次提交的指针

注释标签则会作为完整的对象存储在Git数据库中。Git会计算其校验和,除此之外还包含其他信息,比如标记着tagger的名字、邮箱地址和标签的创建时间,还有标记消息tagging message,另外还可以利用GNXU Privacy Guard(GPG)对它们进行签名和验证。一般推荐创建注释标签,这样可以包含上述所有信息。但如果你需要的只是一个临时标签,或者由于某些愿意不需要包含那些额外信息,也可以用轻量标签

注释标签

创建注释标签很简单,只需要执行带有-a选项的tag命令即可:

代码语言:javascript
复制
$ git tag -a v1.14 -m "my version 1.4"
$ git tag
v0.1
v1.3
v1.4

-m选项指定了标记信息,它会伴随着标签一起被存储。如果你没有为注释标签指定标记消息,Git会打开文本编辑器以便你进行输入

执行git show命令可以看到标签数据以及对应的提交:

代码语言:javascript
复制
$ 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 .....

上述命令的输出显示了标记着信息、提交被标记的日期以及注释信息,最后是提交信息

轻量标签

另一种用来标记提交的方法是使用轻量标签。这种标签基本上就是把提交的校验和保存到文件中,初次之外,不包含其他任何信息。创建一个轻量标签时不需要使用-a-s-m选项

代码语言:javascript
复制
$ git tag v1.4-lw
$ git tag
v0.1
v1.3
v1.4
v1.4-lw
v1.5

如果你现在在这表标签上执行git show,除了提交信息之外,不会看到别的标签信息

代码语言:javascript
复制
$ git show v1.4-lw
commit 4161da8adb3ae644b9689a9007dc99b51731f7ba
Author: CarlDuFromChina <18556906294@163.com>
Date:   Fri Oct 29 15:07:20 2021 +0800

    release v2.3.3

补加标签

你还可以随后再给之前的提交添加标签。假设你的提交历史看起来像下面这样

代码语言:javascript
复制
$ git log --pretty=oneline
41f4f048b51a6a32c418b39c853d1f33ff7b45fe 参数控制评论显示
580e8cf14333dfb6d5eafb00259316ca84c2ff8e 修改网页相关信息

现在,假如你忘记了给项目添加v2.3.3版本的标签,而该版本对应的应该是“参数控制评论显示”这次提交。你仍然可以在这时标签这次提交。只需要在命令最后指定提交的校验和(或部分校验和)就可以了:

代码语言:javascript
复制
$ git tag -a v2.3.3 41f4f0

共享标签

默认情况下,git push命令不会把标签传输到远程服务器上。在创建了标签之后,你必须明确地将标签推送到共享服务器上。这个过程有点像推送分支,对应的命令是git push origin [tag name]

代码语言:javascript
复制
$ git push origin v2.3.3

如果你有很多标签需要一次性推送过去,可以使用git push命令的--tags选项。这会把所有服务器上还没有标记都推送过去

代码语言:javascript
复制
$ git push origin --tags

执行完上述命令后,如果其他人此时对仓库执行克隆或拉去操作,它们也能够得到所有的标签

检出标签

你是无法在Git中真正检出一个标签的,这是因为标签无法移动。如果想将某个版本的仓库放入像是标签的工作目录中,可以使用git checkout -b [branch name] [tag name]在特定标签上创建一个新的分支:

代码语言:javascript
复制
$ git checkout -b 2.3.3 v2.3.3
Switched to a new branch '2.3.3'

如果你执行上面的操作并完成了提交,那么2.3.3分支会和你的标签v2.3.3略有不同,它携带了新的变更,所以要小心操作

删除标签

如果你创建了错误的标签,那么你可以执行git tag -d [tag name]删除标签

代码语言:javascript
复制
$ git tag -d v.2.3.3
Deleted tag 'v.2.3.3' (was 4161da8)

如果你已经推送到远程仓库上了,你可以执行git push origin :refs/tags/[tag name]删除标签

代码语言:javascript
复制
$ git push origin :refs/tags/v2.3.3
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/10/30 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 列举标签
  • 创建标签
    • 注释标签
      • 轻量标签
        • 补加标签
          • 共享标签
            • 检出标签
            • 删除标签
            相关产品与服务
            对象存储
            对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档