git tag详解

news2024/11/26 15:45:57

文章目录

  • 前言
  • 1. Git tag的基本概念和用法
    • 1.1. 什么是 Git tag?
    • 1.2. Git 标签有什么作用?
  • 2. 创建 Git tag
    • 2.1. 创建轻量级tag
    • 2.2. 创建带有注释的tag
    • 2.3. 编辑已有的tag
  • 3. 列出和检出 Git tag
    • 3.1. 列出所有tag
    • 3.3. 列出匹配的tag
    • 3.4. 检出tag
  • 4. 将 Git tag推送到远程存储库
    • 4.1. 推送单个tag
    • 4.2. 推送所有tag
    • 4.3. 删除远程tag
  • 5. Git tag高级用法
    • 5.1. 签名tag
    • 5.2. tag过滤
    • 5.3. 访问tag历史记录


前言

通常我们在生产环境发版时,创建一个 tag,这样一个不可修改的版本将被冻结起来,这对于发布或者版本管理非常有益。


1. Git tag的基本概念和用法

1.1. 什么是 Git tag?

Git 中,tag是标记存储库历史记录中特定提交的一种方式。tag通常用于标记项目的特定版本,例如版本 1.02.0

1.2. Git 标签有什么作用?

tag可以用于指定在仓库历史记录的某个特定点上创建的版本,这在软件开发中非常有用。如果需要在软件发布时创建tag,开发人员就可以跟踪哪个版本用于真实世界中的生产环境。在软件开发中,tag还可以用于标记里程碑特定功能的实现

除此之外,tag还可以用于将存储库中的提交版本控制系统中的标记关联。这可以用于确保特定版本的软件与存储库中的特定提交相关联。在软件开发中,这可以用于确保特定版本的软件与单独的存储库分支相关联


2. 创建 Git tag

可以使用消息创建带注释的 tag,也可以创建不带消息的轻量级 tag。带注释的 tag 包括 tag 的名称、电子邮件和日期等信息,而轻量级 tag 仅是对特定提交的指针。

2.1. 创建轻量级tag

运行 git tag [tagname] 命令,后跟标签的名称。例如,git tag v2.0 将创建一个名为 “v2.0” 的轻量级标签。

在这里插入图片描述

2.2. 创建带有注释的tag

运行 git tag -a [tagname] 命令,后跟引号中的消息。例如,git tag -a v1.0 -m "Initial release" 将创建一个名为 “v1.0” 并带有 “Initial release” 消息注释的标签。

运行 git show [tagname] 命令,可以查看标签的详细信息,包含注释、作者、邮箱、创建日期等信息
在这里插入图片描述

2.3. 编辑已有的tag

运行 git tag -f [tagname] 命令,后跟新的提交哈希或分支名称。例如,git tag -f v1.0 [new-commit-hash] 将把“v1.0”标签移动到新提交。或者,git tag -f v1.0 [new-branch-name] 将标签移动到新分支的末尾。

在这里插入图片描述


3. 列出和检出 Git tag

3.1. 列出所有tag

运行 git tag 命令。例如,git tag 将列出所有本地标签。如果要查看远程存储库中的标签,可以使用 git ls-remote --tags [remote] 命令。例如,git ls-remote --tags origin 将列出名为 origin 的远程存储库中的所有标签。
在这里插入图片描述

3.3. 列出匹配的tag

运行 git tag -l [pattern] 命令。例如,git tag -l v1.* 将列出所有以 “v1.” 开头的标签。

在这里插入图片描述

3.4. 检出tag

要检出 Git 标签,可以使用 git checkout [tagname] 命令。例如,要检出名为 “v1.0” 的标签,请运行 git checkout v1.0 命令。

检出标签将使存储库进入 “游离 HEAD” 状态,这意味着所做的任何更改都不会与分支相关联。如果要在标签上进行更改,可以创建一个新的分支来进行更改,以避免对标签进行更改并破坏历史记录。


4. 将 Git tag推送到远程存储库

4.1. 推送单个tag

运行 git push origin [tagname]。例如,要将标签“v1.0”推送到远程仓库,请使用命令 git push origin v1.0

在这里插入图片描述
运行 git ls-remote 查看远程标签。可以看到v1.0已经成功推送到远程仓库。
在这里插入图片描述

4.2. 推送所有tag

运行 git push --tags。这将推送所有尚未在远程仓库上的本地标签。
在这里插入图片描述
此时我们可以在仓库看到本地的tag已经被推送过来了。
在这里插入图片描述

4.3. 删除远程tag

要删除远程 Git 标签,需要使用 git push 命令,后跟 --delete 选项和标签名称。例如,要删除名为 v1.0 的标签,可以运行以下命令:git push --delete origin v1.0。这将从远程存储库中删除标签。
在这里插入图片描述

请注意,如果您删除了远程标签,那么需要确保本地存储库中也删除了它。您可以使用 git tag -d [tagname] 命令来删除本地标签。例如,要删除名为 v1.0 的标签,可以运行以下命令:git tag -d v1.0
在这里插入图片描述


5. Git tag高级用法

5.1. 签名tag

要为 Git 标签签名,可以使用 git tag -s [tagname] 命令,并使用你的 GPG 密钥对标签进行签名。例如,git tag -s v1.0 将使用您的 GPG 密钥对名为 “v1.0” 的标签进行签名。
在这里插入图片描述
如果报错No secret key,解决方法:在Git Bash终端配置gpg程序位置
在这里插入图片描述

编辑完成后:wq保存退出即可。

在这里插入图片描述

要验证签名的 Git 标签,请使用 git tag -v [tagname] 命令。例如,git tag -v v1.0 将验证名为 “v1.0” 的标签的签名,并显示签名者和提交 ID 等信息。如果您想验证未标记的提交,可以使用提交哈希代替标记名称,例如,您可以运行git verify-commit [commit-hash]直接验证提交,而不是运行git tag -v [tagname]
在这里插入图片描述

签名标签可以帮助确保标签的完整性和来源,因此它们特别适用于需要进行身份验证或需要进行安全审计的软件项目。


注意:如果报错了,请确保已经安装GPG,并且密钥已正确配置

请按照以下步骤安装并配置 GPG

  1. 在您的操作系统上打开终端命令提示符
  2. 输入以下命令以安装 GPG
  • 如果你使用的是 macOS,可以使用 Homebrew 包管理器安装 GPG

    brew install gnupg
    
  • 如果你使用的是 Linux,可以使用你的包管理器安装 GPG。例如,在 Ubuntu 上,可以使用以下命令:

    sudo apt-get install gnupg
    
  • 如果你使用的是 Windows,可以从 Gpg4win 官方网站下载并安装 Gpg4win:https://gpg4win.org/download.html

  1. 安装完成后,你可以验证 GPG 是否正确安装,可以在终端上运行以下命令:

    gpg --version
    

    如果你正确安装了 GPG,你应该会看到版本号和其他信息。
    在这里插入图片描述

  2. 配置密钥
    1.使用gpg --gen-key命令生成一个新的GPG密钥。这会打开一个提示,您可以在其中输入有关密钥的信息,例如您的姓名和电子邮件地址。
    2.生成密钥后,您可以使用gpg --list-keys命令列出您的密钥。这将显示您密钥的指纹,您稍后需要使用它。
    3.使用gpg --export --armor [你的钥匙指纹]命令导出您的GPG公钥。这将以ASCII装甲格式输出您的公钥,您可以将其复制并粘贴到Git托管服务中。

    在这里插入图片描述

    ok,配置成功
    在这里插入图片描述

    4.通过运行以下命令配置Git使用您的GPG密钥:

    git config --global user.signingkey [你的钥匙指纹]
    git config --global commit.gpgsign true
    

    运行git config --list查看user.signingkey是否配置成功。

    在这里插入图片描述

    这些命令将告诉Git使用您的GPG密钥来签署您的提交。


5.2. tag过滤

要过滤 git 标签,请使用 git tag 命令的 --list 选项,后跟一个模式。例如,要列出以“v1.”开头的所有标记,请运行以下命令:

git tag --list 'v1.*'

这将列出所有以“v1.”开头的标记,例如“v1.0”、“v1.1”等。

你还可以使用 --contains 选项来列出包含指定提交的标记。例如,要列出包含提交 abc123 的所有标记,请运行以下命令:

git tag --contains abc123

这将列出所有包含提交 abc123 的标记。

5.3. 访问tag历史记录

要访问Git标签的历史记录,您可以使用git tag命令,带有--list选项和--sort选项,后跟version:refname以按版本号对标签进行排序。例如,要按时间顺序列出标签,您可以运行以下命令:

git tag --list --sort=-v:refname

这将以相反的时间顺序列出所有标签,并将最新的标签列在第一位。

在这里插入图片描述

您还可以通过添加--max-count选项,后跟要显示的标签数,来限制列出的标签数。例如,要列出最近的10个标签,可以运行以下命令:

git tag --list --sort=-v:refname --max-count=10

这将以相反的时间顺序列出最近的10个标签。

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

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

相关文章

可视化 | Flask+Mysql+PyEcharts 电影Top250数据分析系统

文章目录 🏳️‍🌈 1. 数据库数据表1. 电影信息数据表2. 用户数据表 🏳️‍🌈 2. 各子界面1. 登陆界面2. 注册界面3. 电影信息概要界面4. 搜索界面5. 各年份上映电影数量6. 电影榜单TOP107. 评价人数TOP208. 地区电影TOP109. 电影…

uniapp 微信小程序导航功能(单个地址)

获取终点的坐标&#xff0c;根据终点的坐标&#xff0c;终点名称&#xff0c;终点详细地址&#xff0c;调起地图导航到第三方APP 1、针对单个地址导航 <template><view click"toGetLocation"></view><view click"toNavigation">&…

利用Docker实现容器互连

实验要求 掌握利用Docker实现跨主机容器互连的方法。 实验准备 要求实验主机能够连接外网&#xff0c;已经正确安装Docker&#xff0c;并关闭防火墙和selinux&#xff0c;各主机配置信息如表所示 表 主机配置信息表 主机名 IP地址/子网掩码 容器名 容器IP地址 node1 你…

选对方法,K8s 多集群管理没那么难

作者&#xff1a;庄宇 Kubernetes 作为一项核心技术已成为现代应用程序架构的基础&#xff0c;将 Kubernetes 作为容器编排系统已发展为越来越多企业的必然选择。 随着对云计算接受程度不断提高&#xff0c;以及企业规模和业务持续发展的共同驱动下&#xff0c;越来越多的企业…

开发模式、API接口

文章目录 一、web开发模式1.1 前后端混合开发1.2 前后端分离开发 二、API接口2.1 简介2.2 RESTful API接口规范 道阻且长&#xff0c;行则将至&#xff0c;行而不辍&#xff0c;未来可期&#x1f31f;。人生是一条且漫长且充满荆棘的道路&#xff0c;一路上充斥着各种欲望与诱惑…

rtdetr:paddledetection与ultralytics对比

转眼间&#xff0c;自DETR被提出已经过去了2年了&#xff0c;如今又迎来了2023年&#xff0c;可以说&#xff0c;这是Transformer框架在CV领域发力的第3个年头了。时至今日&#xff0c;对Transformer的质疑声越来越小了&#xff0c;它的强大得到了越来越多、越来越广泛的认可。…

进程与线程的基本概念和代码实现

1 前言 利用现学知识能够让两个函数或者方法同时执行吗? 不能&#xff0c;因为之前所写的程序都是单任务的&#xff0c;也就是说一个函数或者方法执行完成另外一个函数或者方法才能执行&#xff0c;要想实现这种操作就需要使用多任务。 多任务的最大好处是充分利用CPU资源&a…

超好用的检测模块---SUI-101A交流变送器

前言&#xff1a; SUI-101A交流变送器作为高精度交流变送器&#xff0c;可以高精度获取电压、电流、有功功率、功率因素、频率、电量等电参数&#xff0c;并且低功耗&#xff0c;实时性好、操作方便快捷&#xff0c;同时可以隔离高压&#xff0c;便于进行安全测量。 SUI-101A模…

qt for android 开发之tcp通讯

简介 通过TCP使PC和android手机相互通讯。 准备 使用QT的网络模块 QT core gui networkgreaterThan(QT_MAJOR_VERSION, 4): QT widgets.h 定义TCP接口 #include <QTcpSocket>class MainWindow : public QMainWindow {Q_OBJECTpublic:explicit MainWindow(Q…

日本最大港口遭勒索软件攻击,造成巨大经济影响!

日本名古屋港位于伊势湾&#xff0c;是日本最大和最繁忙的贸易港口&#xff0c;占全国总贸易量的10%左右。值得注意的是&#xff0c;这个港口还是日本最大的汽车出口国&#xff0c;丰田汽车公司的大部分汽车都在这里出口。 近日该港口遭遇了一次勒索软件攻击&#xff0c;影响了…

Maven使用IDEA自带工具打包,同时将lib下的jar包打入,双击jar包可直接运行

前言 使用IDEA自带打包工具&#xff0c;可以将自己引入的第三方jar包&#xff08;lib下的jar包&#xff0c;非pom文件中&#xff09;打包到jar中。 Artifacts是maven中的一个概念&#xff0c;表示某个module要如何打包&#xff0c;例如war exploded、war、jar、ear等等这种打…

Python 函数耗时异常自动化监控实战教程

内容 隐藏 一、性能数据函数耗时采集及可视化报表生成 1. 性能数据文件保存&#xff08;cProfile&#xff09; 2. 详细性能数据读取查看 二、生成函数调用栈结构图&#xff08;gprof2dot&#xff09;教程 三、性能分析及优化实战 四、耗时异常自动化监控 1. 正态分布数据方…

mysql 主从复制配置步骤

1、准备两台数据库环境&#xff0c;或者单台多实例环境&#xff0c;能否正常启动和登录。 2、配置my.cnf文件&#xff0c;主库配置log-bin和server-id参数&#xff0c;从库配置server-id&#xff0c;不能和主库及其他从库一样&#xff0c;一般不开启从库log-bin功能。注意&…

基于STM32的土壤湿度传感器使用

基于STM32的土壤湿度传感器使用 最近在学习中用到了ADC数据采集这里使用的硬件模块为土壤湿度传感器&#xff0c;下面为土壤传感器相关的使用方法和代码介绍。 1、土壤湿度传感器实物图 土壤湿度传感器一共有4个引脚分别为&#xff1a; GND VCC DO AO&#xff0c;在本次实验中使…

macbook按u键入笔画

mac自带输入法提供了笔画输入快捷方式&#xff0c;键入u会自动变成笔画输入 当遇到不会念的字的时候还是很有用的 横、竖、撇、捺、折、写 上面的拼音首字母对应了比划&#xff0c;非前五个笔画的时候就用 x&#xff08;写&#xff09;替代 比如&#xff1a;彳亍 第一个字输…

php宝塔部署开源NXCRM客户管理系统开源源码

注意&#xff1a;因为微信最近又改了推送机制&#xff0c;经常有朋友说错过了之前的搭建教程文章&#xff0c;每次都要主动搜索才能搜到公众号。所以建议大家加个星标&#xff0c;就能第一时间收到推送。 大家好啊&#xff0c;我是测评君&#xff0c;欢迎来到web测评。本期给大…

【UnityDOTS 十三】Cleanup Component

Cleanup Component 前言 一种特殊的组件&#xff0c;当Entity销毁时&#xff0c;要独立移除这个组件。 意味着当你删除一个Entity后&#xff0c;这个组件还存在&#xff0c;那么该Entity也会存在。 主要用于创建Entity时&#xff0c;进行初始化操作&#xff1b;或者销毁时&a…

Base64码转换成图片

一、在浏览器地址栏输入 data:image/png;base64, 生成的base64码 1、示例&#xff1a; data:image/png;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCAg... 2、访问转换结果&#xff1a; 小结&#xff1a; 1、转换支持 png 格式&#xff1a;data:image/png;base64, 生成的b…

分布式监控zabbix的使用(一)

zabbix 一、添加zabbix客户端主机&#xff0c;测试是否能连接服务端和客户端都设置 hosts 解析设置 zabbix 的下载源&#xff0c;安装 zabbix-agent2修改 agent2 配置文件通过键值测试连通性在 Web 页面中添加 agent 主机 二、自定义监控内容在客户端创建自定义key 三、在web页…