【Git教程】(九)版本标签 —— 创建、查看标签,标签的散列值,将标签添加到日志输出中,判断标签是否包含特定的提交 ~

Git教程 · 版本标签(tag)

  • 1️⃣ 创建标签
  • 2️⃣ 查看存在的标签
  • 3️⃣ 标签的散列值
  • 4️⃣ 将标签添加到日志输出中
  • 5️⃣ 判断tag是否包含特定的提交
  • 🌾 总结

大多数项目都是用 1.7.3.2和 “ gingerbread” 这样的数字或名称来标识软件版本的。在 Git 中,我们可以用标签 (tag) 来做这件事。

在这里插入图片描述


1️⃣ 创建标签

标签化某次提交

  1. 创建一个普通的标签
    在下面的例子中,我们会为 master 分支上的当前版本创建一个名为 1.2.3.4 的标签,并 将其注释为“Freshly built.”。
> git tag 1.2.3.4 master -m "Freshly built." 
  1. 推送某单一标签
    推送操作通常不会自动传送标签。但如果我们明确指定了某个标签名,该标签就可以
    被传送了。
> git push origin 1.2.3.4

另外,使用带 -tags 参数的 push 命令也可以用来推送被传送分支的标签。

> git push --tags

如果我们在这里使用了 GnuPG ( 即Gnu Privacy Guard,简称GnuPG 或 GPG, 是一种公私密钥加密方式。用户可通过某种数字证书生成一对公私密钥,以此来确保数据的安全传输) , 可以通过-s 参数来提供该标签所带的数字签名。当然,这个前提是我们已经在 Git 中输入了默认 EMail 地址,而该地址同时也是注册 GnuPG 时所用的用户ID。

> git tag 1.2.3.4 master -s -m "Signed."

请注意! 如果你创建标签时使用了 -m-a-s-u 这些参数,Git 会将在版本库中将标签 作为一个独立对象来创建。该对象中会包含相关用户以及创建时间等信息。而要是如果没有使用这些选项,Git 就只会创建一个所谓的轻量级标签,其中只有用于识别的提交散列值。


2️⃣ 查看存在的标签

如果我们不带任何参数地调用 tag 命令,就会列出当前所有的标签。这可能会是一个长长的清单。对此,我们可以通过 -l
参数使用像 1.2.* 这样的表达模式来减少输出。

> git tag -l 1.2.*
1.2.0.0 Beginning.
1.2.3.3 New build.
1.2.3.4 Recently built.

3️⃣ 标签的散列值

我们可以通过带 --tags 参数的 show-ref 命令来列出标签对象的提交散列值。另外,你也可以通过 -dereference 参数同时打印出其相应提交对象的散列值,它们将会被打上 ^{} 标记。

> git show-ref --dereference --tags
...
f63cd7181787c9973788a97648796468cec474aa  refs/tags/1.2.3.3
cef89bbd712laac3cc38fe3a342045c9401bd6b9  refs/tags/1.2.3.3^{}
4a0228bdd0ab5e0180422c82bf706c42671a8laf  refs/tags/1.2.3.4
cef89bbd712laac3cc38fe3a342045c9401bd6b9  refs/tags/1.2.3.4^{}

4️⃣ 将标签添加到日志输出中

我们可以使用带 -decorate 参数的 log 命令标签与各提交的分支。

> git log --oneline --decorate
cef89bb (HEAD, tag: 1.2.3.4) Again, everything rebuilt.
9d4caed Merge branch 'Other'.	
dcd1c6c Changed.
ccela68 (tag:1.2.3.3)Something changed	

5️⃣ 判断tag是否包含特定的提交

我们常常会面临一个问题,就是要判断某一特定的功能或 bug 修复是否被包含在客户所安装的那个版本中。如果其对应的提交是已知的,问题显然很容易回答。用带 -contains 参数的 tag 命令就可以列出历史记录中包含该提交的所有标签。

> git tag --contains f63cd71
1.2.3.3
1.2.3.4

请注意! 如果有一些提交曾经被复制过,就有可能会对上述结果产生误导。例如,如果 这些版本是通过捡取操作被放在一起的,要想找出特定修改是否包括在内就非常麻烦了。对此,我们可以用 log 命令时在特定标签后面加上对注释内容的搜索。

> git log --oneline 1.2.3.3 | grep "a comment."

但这也只有在我们所添加的注释中包含了能用于识别修改的信息时才行得通,这需要我们往其中添加有意义的注释或者 bug 跟踪管理系统中的ID 。另外,这也是我们应该避免复制提交的重要理由之一。

注意,如果我们需要一个可移动的标志,比如用来标识区分当前生产环境中已上线/未上线的状态,那么应当使用一个分支,而不是标签。

🌾 总结

  • 创建标签:即用 tag 命令来创建标签。
  • 推送:push 命令可以只用来传送那些被明确指定的标签,例如这样 git push origin 1.2.3.4, 当然,如果我们使用了-tags 参数就不用指定标签了。
  • 拉回与获取pullfetch 这两个命令都会自动获取其所涉及分支中的所有标签,除非我们在命令中使用了--no-tags 参数。
  • 显示所有标签:这件事可以通过 git tag -l 命令来完成。
  • 在日记中显示标签:我们可以使用 git log-decorate 命令。
  • 共享标签中的提交:如果想要知道某一标签中是否包含了某一提交,我们可以用带 -contains 参数的 tag 命令。


温习回顾上一篇(点击跳转)
《【Git教程】(八)版本库间的交换 —— 版本库的克隆与命名,分支监控、命名、拉取及推送 ~》

继续阅读下一篇(点击跳转)
《【Git教程】(十)版本库之间的依赖 —— 项目与子模块之间的依赖、与子树之间的依赖 ~》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/543616.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

《由浅入深学习SAP财务》:第2章 总账模块 - 2.6 定期处理 - 2.6.6 年初操作:科目余额结转

2.6.6 年初操作:科目余额结转 在使用事务代码 FAGLB03 查询科目余额时,可以看到按期间的发生额清单。其中,第一行称为“余额结转”,该行的累计余额代表上年度遗留下来的余额,也就是年初余额。对于资产负债表科目而言&a…

中华人民共和国密码行业标准-各类标准文档下载

国家密码管理局 中华人民共和国密码行业标准 GmSSL Project 密码行业标准化技术委员会公布了所有密码行业标准,并支持全文查看,参见密码行业标准列表 GM/T 0001-2012 祖冲之序列密码算法 GM/T 0002-2012 SM4分组密码算法(原SMS4分组密码算法) GM/…

深度剖析整型和浮点型数据在内存中的存储(C语言)

目录 整型在内存中的存储 为什么整型在内存中存储的是补码? 大小端字节序 为什么有大端小端? 浮点型家族 浮点数在内存中的存储 long long 整型在内存中的存储 整型在内存中有三种二进制表示形式:原码,反码,补码…

Tomcat源码解析——Tomcat的启动流程

一、启动脚本 当我们在服务启动Tomcat时,都是通过执行startup.sh脚本启动。 在Tomcat的启动脚本startup.sh中,最终会去执行catalina.sh脚本,传递的参数是start。 在catalina.sh脚本中,前面是环境判断和初始化参数,最终…

Linux三剑客-sed、awk、egrep(上)

一、知识梗概 二、正则表达式 定义:正则表达式是一种强大的文本处理工具,用于在文本中搜索符合特定模式的字符串。它由一系列特殊字符和普通字符组成,可以定义复杂的搜索模式。正则表达式被广泛应用于各种编程语言和文本处理工具中。 简单来…

(2024,自回归,下一尺度预测,VQGAN)视觉自回归建模:通过下一尺度预测的可扩展的图像生成

Visual Autoregressive Modeling: Scalable Image Generation via Next-Scale Prediction 公和众和号:EDPJ(进 Q 交流群:922230617 或加 VX:CV_EDPJ 进 V 交流群) 目录 0. 摘要 3. 方法 3.1 基础:通过下…

OpenAI反超Claude3,GPT4.5-Turbo正式版发布,AI王座再次易主

没想到,仅仅过了两个月,全球最强AI的宝座又易主了! 几个月前,Claude3 Opus全面超越GPT-4,全球的网友纷纷抛弃GPT,投向Claude3的怀抱,并纷纷分享Claude3带来的惊艳体验。 如今,Open…

Win10 使用Telnet

命令行 telnet 127.0.0.1 80 调试是否能连接服务 输入exit 回车即可退出 相比于ping的不同

k8s:kubectl 命令设置简写启用自动补全功能

k8s:kubectl 命令设置简写&启用自动补全功能 1、设置kubectl命令简写2、启用kubectl自动补全功能 💖The Begin💖点点关注,收藏不迷路💖 Kubernetes(K8s)是一个强大的容器编排平台&#xff0…

生活中的数学 --- 等额本息贷款和等额本金贷款的月供应该怎么算?

等额本息贷款和等额本金贷款的月供应该怎么算? 从一个例子开始,假设我要从银行贷款36万(即,本金),银行给出的贷款年利率是12%(月利率为年利率除以12),贷款半年(6个月),按月还款,分6期还完。 问分…

5、JVM-G1详解

G1收集器 -XX:UseG1GC G1 (Garbage-First)是一款面向服务器的垃圾收集器,主要针对配备多颗处理器及大容量内存的机器. 以极高概率满足GC停顿时间要求的同时,还具备高吞吐量性能特征. G1将Java堆划分为多个大小相等的独立区域(Region),JVM目标…

Open CASCADE学习|实现Extrude功能

首先定义了一些基本的几何元素,如线、圆和平面,然后使用makeExtrudebydir函数来对一个面进行挤出操作。下面是详细过程: 定义Extrude函数:makeExtrudebydir函数接受一个TopoDS_Shape对象和一个gp_Vec对象作为参数。TopoDS_Shape是…

【数据挖掘】实验6:初级绘图

实验6:初级绘图 一:实验目的与要求 1:了解R语言中各种图形元素的添加方法,并能够灵活应用这些元素。 2:了解R语言中的各种图形函数,掌握常见图形的绘制方法。 二:实验内容 【直方图】 Eg.1&…

单路高清HDMI编码器JR-3211HD

产品简介: JR-3211HD单路高清HDMI编码器是专业的高清音视频编码产品,该产品具有支持1路高清HDMI音视频采集功能, 1路3.5MM独立外接音频输入,编码输出双码流H.264格式,音频MP3/AAC格式。编码码率可调,画面质…

CASA(Carnegie-Ames-Stanford Approach)模型原理及实践应用

植被作为陆地生态系统的重要组成部分对于生态环境功能的维持具有关键作用。植被净初级生产力(Net Primary Productivity, NPP)是指单位面积上绿色植被在单位时间内由光合作用生产的有机质总量扣除自养呼吸的剩余部分。植被NPP是表征陆地生态系统功能及可…

Linux登录访问限制

Linux系统下,用户密码的有效期可以通过编辑/etc/login.defs文件控制;密码复杂度规则设定需要通过/etc/pam.d/system-auth文件控制;登录失败次数限制通常由/etc/pam.d/login文件限制,可使用pam_tally2模块进行设置。 Linux系统下的…

Linux的学习之路:10、进程(2)

摘要 本章主要是说一下fork的一些用法、进程状态、优先级和环境变量。 目录 摘要 一、fork 1、fork的基本用法 2、分流 二、进程状态 三、优先级 四、环境变量 1、常见环境变量 2、和环境变量相关的命令 3、通过代码如何获取环境变量 五、导图 一、fork 1、fork…

Houdini笔记操作技巧_集锦

个人记录下,谨防遗忘。同时丰富下Hou的中文搜素环境。 1、自定义启动界面 ① 设置完界面后,保存自定义界面(Save Current Desktop As...) ② Edit-->Preferences-->General UIInterface-->Startup in Desktop&#xff1…

换手机了怎么重新设置Microsoft Authenticator验证?

进入到这个页面 https://mysignins.microsoft.com/security-info 选择安全信息

顺序表实战——基于顺序表的通讯录

前言:本篇文章主要是利用顺序表作为底层, 实现一个通讯录。偏向于应用, 对于已经学习过c的友友们可能没有难度了已经。没有学习过c的友友, 如果顺序表不会写, 或者说没有自己实现过, 请移步学习顺序表相关内…