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

news2024/11/17 23:46:51

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教程】(十)版本库之间的依赖 —— 项目与子模块之间的依赖、与子树之间的依赖 ~》

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

5.3 mybatis之autoMappingUnknownColumnBehavior作用

文章目录 1. NONE2. WARNING3. FAILING autoMappingUnknownColumnBehavior是< settings >配置下的属性&#xff0c;该属性是指定发现自动映射目标未知列&#xff08;或未知属性类型&#xff09;的行为。就是说当数据库中的字段找不到映射java对象的属性或者与java对象对应…

1036: 寻找整数序列的主元素

解法&#xff1a; #include<iostream> #include<vector> #include<algorithm> using namespace std; int main() {int n;cin >> n;vector<int> arr(n);vector<int> tong(1000);for (auto& x : arr) {cin >> x;tong[x];}int pma…

ArrayList底层源码分析

ArrayList底层源码分析 底层原理 创建使用ArrayList<>()创建空对象的时候&#xff0c;会在底层创建一个长度为0的数组。该数组的名称为elementData&#xff0c;定义变量size size变量有两层含义 ① 表示元素的个数&#xff0c;也就是集合的长度② 表示下一个元素的存入位…

PostgreSQL入门到实战-第二十九弹

PostgreSQL入门到实战 PostgreSQL中数据分组操作(四)官网地址PostgreSQL概述PostgreSQL中CUBE命令理论PostgreSQL中CUBE命令实战更新计划 PostgreSQL中数据分组操作(四) 如何使用PostgreSQL CUBE生成多个分组集 官网地址 声明: 由于操作系统, 版本更新等原因, 文章所列内容不…

Ubuntu20.04安装FloodLight最新版本

Ubuntu20.04安装FloodLight最新版本 网上的很多教程尝试了一下都不对&#xff0c;并且很多都是基于Ubuntu14的旧版本系统&#xff0c;其中的Python环境大多是基于2.0的&#xff0c;由于本人所使用的系统是Ubuntu20.04&#xff0c;后再油管澳大利亚某个学校的网络教学视频的帮助…

全国各省自然灾害损失造成的直接经济损失数据(2009-2022年)

01、数据简介 自然灾害是指给人类生存带来危害或损害人类生活环境的自然现象&#xff0c;这些现象是地球演化过程的自然现象。它们主要包括气象灾害、地质灾害、海洋灾害、生物灾害、森林草原火灾等五大类。 具体来说&#xff0c;气象灾害包括干旱、洪涝灾害、台风、风雹、低…

【OpenHarmony】XTS环境配置

零、参考 1、xts测试环境配置&#xff1a;https://www.yuque.com/u25440504/ehvzki/ik2fso 2、Windows安装Python、pip、easy_install的方法&#xff1a;https://pythonjishu.com/bmxqeisbkzgrpnn/ 3、Python中easy_install 和 pip 的安装及使用&#xff1a; https://blog.c…

【2024年IT行业各方向学习路线图(必收藏】

【IT行业各方向学习路线图(必收藏】 2024 Java学习路线图&#xff1a; 学习Java基础知识&#xff0c;包括语法、数据类型、控制流程等。 掌握面向对象编程&#xff08;OOP&#xff09;的概念和Java中的实现。 熟悉Java集合框架和多线程编程。 学习Java I/O流、网络编程和数据…

2024HW --> 安全产品 Powershell无文件落地攻击

在HW中&#xff0c;除了了解中间件&#xff0c;web漏洞&#xff0c;这些攻击的手法&#xff0c;还得了解应急响应&#xff0c;安全产品&#xff0c;入侵排查&#xff0c;溯源反制...... 那么今天&#xff0c;就来说一下安全产品&#xff08;安全公司我就不说了&#xff0c;这个…

[linux]进程控制——进程创建

一、fork&#xff1a; 在linux中fork函数从已存在进程中&#xff0c;创建一个新进程。新进程为子进程&#xff0c;而原进程为父进程。 返回值&#xff1a;子进程中返回0&#xff0c;父进程返回子进程id&#xff0c;出错返回-1。 1、常规用法&#xff1a; 一个父进程希望复制…

【THM】Net Sec Challenge(网络安全挑战)-初级渗透测试

介绍 使用此挑战来测试您对网络安全模块中获得的技能的掌握程度。此挑战中的所有问题都可以仅使用nmap、telnet和来解决hydra。 挑战问题 您可以使用Nmap、 Telnet 和Hydra回答以下问题。 2.1小于10000的最大开放端口号是多少? 8080 nmap -p- -T4 10.10.234.218 2.2普通…

43岁百亿千金夫妇国外旅游高调放闪,羡煞好友马国明

萧正楠早前忙着拍摄TVB新剧《奔跑吧&#xff01;勇敢的女人们》&#xff0c;剧集煞科后他即和老婆黄翠如一起到意大利旅行。两公婆分别在IG大晒旅行靓相&#xff0c;甜蜜满泻。 这次萧正楠的旅游照都是由翠如亲自操刀拍摄&#xff0c;相中所见&#xff0c;萧正楠在广场大摆Chok…

个人笔记目录

目录 一、lora 微调 alpaca 笔记 二、全量微调 Llama2-7b笔记 三、Huggingface trainer 与 from_pretrained简单介绍&#xff08;笔记&#xff09; 四、vscode调试launch.json常用格式 五、huggingface generate函数简介 六、Trl: llama2-7b-hf使用QLora 4bit量化后ds zer…

Linux —— FTP服务【从0-1】

目录 一、介绍 1.概述 2.FTP的传输模式 PORT 主动模式 PASV 被动模式 3.FTP服务的作用 二、搭建FTP服务器 FTP服务端配置 1.安装vsftpd文件服务 2.启动服务 3.防火墙配置 4.FTP服务相关文件说明 FTP客户端配置 1.安装FTP客户端工具 lftp 2.访问FTP服务器 Linux系…

【第十二届“泰迪杯”数据挖掘挑战赛】【2024泰迪杯】B题基于多模态特征融合的图像文本检索—更新(正式比赛)

【第十二届“泰迪杯”数据挖掘挑战赛】【2024泰迪杯】B题基于多模态特征融合的图像文本检索—更新&#xff08;正式比赛&#xff09; 往期链接&#xff1a; 【第十二届“泰迪杯”数据挖掘挑战赛】【2024泰迪杯】B题基于多模态特征融合的图像文本检索—解题全流程&#xff08;…

Java集合(一)--Map(2)

ConcurrentHashMap与HashTable 底层实现 在JDK1.7时&#xff0c;底层采用的是分段数组&#xff0b;链表的形式&#xff0c;在JDK1.8之后&#xff0c;采用的是与HashMap相同的形式&#xff0c;数组链表/红黑树。而HashTable采用的是数组链表的形式。 如何实现线程安全 Concu…

QT助手翻译【QT 5.14】 -----QPushButton

目录 1 属性 2 公共职能 3 重新实现的公共功能 4 公用插槽 5 受保护的功能 6 保护方法 7 详细说明 1 属性 自动默认值&#xff1a;bool 此属性保存按钮是否为自动默认按钮 如果此属性设置为true&#xff0c;则该按钮为自动默认按钮。 在某些GUI样式中&a…

Google Imagen 2对比OpenAI的Dall-E 3 - 同一提示,不同结果

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

超市商场客户细分项目

注意&#xff1a;本文引用自专业人工智能社区Venus AI 更多AI知识请参考原站 &#xff08;[www.aideeplearning.cn]&#xff09; 项目背景 在竞争激烈的商业环境中&#xff0c;了解和满足客户的需求是任何成功商场的关键要素。为了更好地理解我们的客户并制定有针对性的营销…

网页布局再次复现

华子目录 普通文档流布局table布局table布局的不足之处 浮动布局浮动优点浮动用途 定位布局相对定位特点&#xff1a; 绝对定位特点&#xff1a; 固定定位 divcss布局div盒子模型标准盒子模型div盒子组成注意 CSS弹性盒子CSS3 弹性盒子常用属性flex使用三要素flex-direction设置…