当前位置: 首页 > news >正文

【Git】四、标签管理

文章目录

  • Ⅰ. 理解标签
  • Ⅱ. 创建标签
      • ① 轻量级标签
      • ② 含附注类标签
  • Ⅲ. 操作标签

在这里插入图片描述

Ⅰ. 理解标签

​ 标签 tag ,可以简单的理解为是 对某次 commit 的一个标识,相当于起了一个别名。例如,在项目发布某个版本的时候,针对最后一次 commit 起一个 v1.0 这样的标签来标识里程碑的意义。

​ 发布一个版本时,我们通常先在版本库中打一个标签(tag),这样就唯一确定了打标签时刻的版本。将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来。

​ 所以,标签是版本库的一个快照

Git 的标签虽然是版本库的快照,但它 其实就是指向某个 commit 的指针(跟分支很像对不对?但是分支可以移动,标签不能移动),所以,创建和删除标签都是瞬间完成的,速度非常快!

Gitcommit,为什么还要引入 tag

​ “请把上周一的那个版本打包发布,commit 号是 6a5819e…

​ “一串乱七八糟的数字不好找!”

​ 如果换一个办法:

​ “请把上周一的那个版本打包发布,版本号是 v1.2

​ “好的,按照 tag v1.2 查找 commit 就行!”

​ 所以,tag 就是一个让人容易记住的有意义的名字,它跟某个 commit 绑在一起

Ⅱ. 创建标签

Git 使用的标签有两种类型: 轻量级的lightweight含附注的annotated

​ 轻量级标签就像是个不会变化的分支,实际上它就是个指向特定提交对象的 引用

​ 而含附注标签,实际上是存储在仓库中的一个 独立对象,它有自身的校验和信息,包含着标签的名字,电子邮件地址和日期,以及标签说明,标签本身也允许使用 GNU Privacy Guard (GPG) 来签署或验证。

一般我们都建议使用含附注型的标签,以便保留相关信息;当然,如果只是临时性加注标签,或者不需要旁注额外信息,用轻量级标签也没问题。

① 轻量级标签

​ 在 Git 中打标签非常简单,首先,切换到需要打标签的分支上:

[liren@VM-8-7-centos remote-test]$ git branch 
* master

​ 然后,敲命令 git tag [name] 就可以打一个新标签:

[liren@VM-8-7-centos remote-test]$ git tag v1.0

​ 并且可以使用命令 git tag 查看所有标签:

[liren@VM-8-7-centos remote-test]$ git tag
v1.0

​ 默认标签是打在最新提交的 commit 上的。那如何在指定的 commit 上打标签呢❓❓❓

​ 方法是 找到历史提交的 commit id,然后打上就可以了,示例如下:

[liren@VM-8-7-centos remote-test]$ git log --pretty=oneline --abbrev-commit 
f167d57 update file.txt.
221511a add file.txt
e7f4971 Initial commit
[liren@VM-8-7-centos remote-test]$ git tag v0.9 f167d57
[liren@VM-8-7-centos remote-test]$ git tag
v0.9
v1.0

​ 注意,标签是按字母排序的,而不是按时间顺序列出的。

​ 我们可以用 git show [tagname] 查看标签信息。

[liren@VM-8-7-centos remote-test]$ git show v1.0
commit f167d579b2f9d07aa8b2b467192e667b98f9353c
Author: 利刃大大 <2916776007@qq.com>
Date:   Thu Jul 13 09:56:12 2023 +0000update file.txt.Signed-off-by: 利刃大大 <2916776007@qq.com>diff --git a/file.txt b/file.txt
index 8d0e412..94a1c74 100644
--- a/file.txt
+++ b/file.txt
@@ -1 +1,2 @@hello git
+add new line;
\ No newline at end of file

② 含附注类标签

Git 还提供可以创建带有说明的标签,用 -a 选项 指定标签名-m 指定说明文字,格式为:

git tag -a [name] -m "XXX" [commit_id]

​ 另外,打完标签之后,使用 tree .git 命令查看一下本地库,可以看到 tags 其实就在 .git/refs/ 目录下:

……
|-- ORIG_HEAD
|-- packed-refs
`-- refs|-- heads|   `-- master|-- remotes|   `-- origin|       |-- HEAD|       `-- master`-- tags                  #如果打印出来其实就是对应的commit id|-- v0.9`-- v1.0

Ⅲ. 操作标签

​ 如果标签打错了,可以使用 -d 选项来进行删除:

[liren@VM-8-7-centos remote-test]$ git tag
v0.9
v1.0
[liren@VM-8-7-centos remote-test]$ git tag -d v0.9  # 删除v0.9标签
Deleted tag 'v0.9' (was f167d57)
[liren@VM-8-7-centos remote-test]$ git tag
v1.0

​ 因为创建的标签都只存储在本地,不会自动推送到远程。所以,打错的标签可以在本地安全删除。

​ 如果要推送某个标签到远程,使用命令 git push origin <tagname>

[liren@VM-8-7-centos remote-test]$ git tag
v1.0
[liren@VM-8-7-centos remote-test]$ git push origin v1.0
Total 0 (delta 0), reused 0 (delta 0)
remote: Powered by GITEE.COM [GNK-6.4]
To git@gitee.com:lirendada/remote-test.git* [new tag]         v1.0 -> v1.0

​ 此时,查看远端码云,看到了标签已经被更新!

在这里插入图片描述

​ 当然,如果你本地有很多标签,也可以一次性的全部推送到远端:

git push origin --tags

​ 💥如果标签已经推送到远程,要删除远程标签就麻烦一点,先从本地删除

[liren@VM-8-7-centos remote-test]$ git tag
v1.0
[liren@VM-8-7-centos remote-test]$ git tag -d v1.0
Deleted tag 'v1.0' (was f167d57)

​ 然后,从远程删除。删除命令也是 push,但是格式如下:

[liren@VM-8-7-centos remote-test]$ git push origin :refs/tags/v1.0
remote: Powered by GITEE.COM [GNK-6.4]
To git@gitee.com:lirendada/remote-test.git- [deleted]         v1.0

​ 在码云上查看确实删除成功!

在这里插入图片描述

相关文章:

【Git】四、标签管理

文章目录 Ⅰ. 理解标签Ⅱ. 创建标签① 轻量级标签② 含附注类标签 Ⅲ. 操作标签 Ⅰ. 理解标签 ​ 标签 tag &#xff0c;可以简单的理解为是 对某次 commit 的一个标识&#xff0c;相当于起了一个别名。例如&#xff0c;在项目发布某个版本的时候&#xff0c;针对最后一次 com…...

elementui中aria-hidden报错

浏览器检查的原因&#xff0c;不影响功能&#xff0c;但会在控制台报红 解决办法&#xff1a; 在对应元素设置display:none .el-radio__original {display: none !important;}...

DeepSeek 助力 Vue 开发:打造丝滑的表单验证(Form Validation)

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享一篇文章&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 目录 Deep…...

【MySQL】简单掌握数据类型与表操作,让数据库性能飞跃

个人主页&#xff1a;♡喜欢做梦 欢迎 &#x1f44d;点赞 ➕关注 ❤️收藏 &#x1f4ac;评论 目录 &#x1f333;一、数据类型 &#x1f343;1.数值类型 &#x1f342;整型类型 &#x1f342;浮点型类型 &#x1f342;定点数类型 &#x1f343;2.字符串类型 3.&am…...

JUC并发编程——Java线程(一)

文章目录 1. 线程的创建1.1 方法1&#xff1a; 直接使用Thread1.2 方法2&#xff1a;使用Runnable配合Thread1.3 方法3&#xff1a;FutureTask配合Thread 2. 线程运行2.1 原理2.2 常见方法2.2.1 start与run2.2.2 sleep与yield2.2.3 join2.2.4 interrupt 3. 主线程和守护线程4. …...

Python入门笔记3

ros小车亚博官网例子延时性基本上跑完了&#xff0c;发现自己一些基础Python语法还不熟悉。 本节学习循环&#xff1a; while\for\break\continue 1. while 循环 while 循环会在条件表达式为真时&#xff0c;重复执行一段代码块&#xff0c;直到条件表达式变为假。 格式&am…...

【SQL教程|07】sql中条件查询where用法示例

SQL WHERE 条件查询教程 在SQL中&#xff0c;WHERE 条件用于在 SELECT 语句后过滤结果集&#xff0c;只返回符合条件的记录。它帮助我们从大量数据中提取所需的信息。以下是使用 WHERE 条件的逐步指南。 1. 基本语法 SELECT [字段] FROM [表] WHERE [条件];SELECT&#xff1a…...

项目实战(13)-双频RFID语音播报阅读器

一. 产品简介&#xff1a; 1、项目背景是在实际应用中需要读取射频标签ID&#xff0c;但是市面上这种标签类型不统一&#xff1b;有的频段是125KHz&#xff0c;高频的是13.56MHz。所以需要一个读卡模块实现这两种卡的识别读取。 2、板子核心处理器是STM32F407&#xff0c;显示…...

基本控制环节的幅频和相频特性

基本控制环节的幅频和相频特性 在控制系统中&#xff0c;不同类型的控制环节具有各自独特的动态特性。为了研究这些环节对信号的影响&#xff0c;通常需要分析其频率响应特性&#xff0c;即幅频特性和相频特性。以下对几种常见的基本控制环节进行逐一分析。 1. 比例环节 比例…...

vue3 ref和reactive的区别

在 Vue 3 中&#xff0c;ref 和 reactive 是两种用于创建响应式数据的 API&#xff0c;但它们的使用场景和实现方式有一些区别。用大白话来说&#xff0c;它们的区别可以这样理解&#xff1a; 1. ref&#xff1a;适合处理简单数据 是什么&#xff1a;ref 是用来包装一个基本类…...

Maven 构建报告与文档生成

Maven 是一种强大的构建工具&#xff0c;它不仅可以帮助我们构建和管理项目&#xff0c;还提供了生成项目报告和文档的功能。通过 Maven 的插件&#xff0c;我们可以自动生成代码文档&#xff08;如 Javadoc&#xff09;&#xff0c;执行测试并生成测试报告&#xff0c;以及其他…...

复制内容到软件内部,软件内部内容不刷新

在Windows 10系统中&#xff0c;遇到复制内容后需要点击任务栏才能刷新软件内容的问题&#xff0c;可能是由于软件自身刷新机制、系统资源管理或显卡驱动等原因导致。以下是逐步解决方案 1. 检查软件设置 开启自动刷新功能&#xff1a;某些软件&#xff08;如文件管理器、IDE、…...

C# 实现完善 Excel 不规则合并单元格数据导入

目录 功能完善 Excel与DataSet的映射关系 运行环境 Excel DCOM 配置 设计实现 组件库引入 方法更新 返回值 参数设计 打开数据源并计算Sheets 拆分合并的单元格 创建DataTable 将单元格数据写入DataTable 删除虚拟列 总结 功能完善 在我的文章 《C#实现Excel…...

C#功能测试

List 内部元素为引用 src[0]为"11" List<Source> src new List<Source>(); src.Add(new Source() { Name "1", Age 1, Description "1" }); src.Add(new Source() { Name "2", Age 2, Description "2"…...

C++17并行化加速STL算法——std::execution

C17 并行化STL算法 文章目录 C17 并行化STL算法概念环境准备工具类 并行算法 - 使用并行算法 - 执行策略总览选择标准详细介绍顺序执行 seq并行化顺序执行 par并行化乱序执行 par_unseq 并行算法 - 异常处理可以不使用并行算法并行算法 - 限制并行算法有哪些原有算法17引入新算…...

从sumsub获取用户图片

已经拿到了imageid 然后从哪个接口可以获取图片文件呢&#xff1f; 根据您的问题,我可以为您提供以下信息: 一旦您获得了imageId,您可以使用以下几个API接口来获取图片文件: 获取文档图片: Get document images GET https://api.sumsub.com/resources/inspections/{inspection…...

DeepSeek + Mermaid编辑器——常规绘图

下面这张图出自&#xff1a;由清华大学出品的 《DeepSeek&#xff1a;从入门到精通》。 作为纯文本生成模型&#xff0c;DeepSeek虽不具备多媒体内容生成接口&#xff0c;但其开放式架构允许通过API接口与图像合成引擎、数据可视化工具等第三方系统进行协同工作&#xff0c;最终…...

ARM64 Trust Firmware [五 ]

本章介绍 ATF 中的 Runtime Service 是如何定义和被调用的。 要了解 SMC&#xff0c;必须从 SMC 指令本身开始&#xff0c;其指令如下图&#xff1a; 指令格式为&#xff1a;SMC #<imm>&#xff0c;从官方文档了解到该指令只能在 EL1 以及更高的异常等级上调用&#xff…...

Excel核心函数VLOOKUP全解析:从入门到精通

一、函数概述 VLOOKUP是Excel中最重要且使用频率最高的查找函数之一&#xff0c;全称为Vertical Lookup&#xff08;垂直查找&#xff09;。该函数主要用于在数据表的首列查找特定值&#xff0c;并返回该行中指定列的对应值。根据微软官方统计&#xff0c;超过80%的Excel用户在…...

KTransformers如何通过内核级优化、多GPU并行策略和稀疏注意力等技术显著加速大语言模型的推理速度?

KTransformers通过内核级优化、多GPU并行策略和稀疏注意力等技术显著加速大语言模型的推理速度&#xff0c;具体体现在以下几个方面&#xff1a; 内核级优化&#xff1a; KTransformers采用了高效的内核级优化技术&#xff0c;包括对Transformer模型中的关键操作进行优化。例如…...

linux之kylin系统nginx的安装

一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源&#xff08;HTML/CSS/图片等&#xff09;&#xff0c;响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址&#xff0c;提高安全性 3.负载均衡服务器 支持多种策略分发流量…...

【JVM】- 内存结构

引言 JVM&#xff1a;Java Virtual Machine 定义&#xff1a;Java虚拟机&#xff0c;Java二进制字节码的运行环境好处&#xff1a; 一次编写&#xff0c;到处运行自动内存管理&#xff0c;垃圾回收的功能数组下标越界检查&#xff08;会抛异常&#xff0c;不会覆盖到其他代码…...

使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台

🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...

[免费]微信小程序问卷调查系统(SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】

大家好&#xff0c;我是java1234_小锋老师&#xff0c;看到一个不错的微信小程序问卷调查系统(SpringBoot后端Vue管理端)【论文源码SQL脚本】&#xff0c;分享下哈。 项目视频演示 【免费】微信小程序问卷调查系统(SpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibili 项…...

day36-多路IO复用

一、基本概念 &#xff08;服务器多客户端模型&#xff09; 定义&#xff1a;单线程或单进程同时监测若干个文件描述符是否可以执行IO操作的能力 作用&#xff1a;应用程序通常需要处理来自多条事件流中的事件&#xff0c;比如我现在用的电脑&#xff0c;需要同时处理键盘鼠标…...

论文阅读笔记——Muffin: Testing Deep Learning Libraries via Neural Architecture Fuzzing

Muffin 论文 现有方法 CRADLE 和 LEMON&#xff0c;依赖模型推理阶段输出进行差分测试&#xff0c;但在训练阶段是不可行的&#xff0c;因为训练阶段直到最后才有固定输出&#xff0c;中间过程是不断变化的。API 库覆盖低&#xff0c;因为各个 API 都是在各种具体场景下使用。…...

实战三:开发网页端界面完成黑白视频转为彩色视频

​一、需求描述 设计一个简单的视频上色应用&#xff0c;用户可以通过网页界面上传黑白视频&#xff0c;系统会自动将其转换为彩色视频。整个过程对用户来说非常简单直观&#xff0c;不需要了解技术细节。 效果图 ​二、实现思路 总体思路&#xff1a; 用户通过Gradio界面上…...

在golang中如何将已安装的依赖降级处理,比如:将 go-ansible/v2@v2.2.0 更换为 go-ansible/@v1.1.7

在 Go 项目中降级 go-ansible 从 v2.2.0 到 v1.1.7 具体步骤&#xff1a; 第一步&#xff1a; 修改 go.mod 文件 // 原 v2 版本声明 require github.com/apenella/go-ansible/v2 v2.2.0 替换为&#xff1a; // 改为 v…...

Java后端检查空条件查询

通过抛出运行异常&#xff1a;throw new RuntimeException("请输入查询条件&#xff01;");BranchWarehouseServiceImpl.java // 查询试剂交易&#xff08;入库/出库&#xff09;记录Overridepublic List<BranchWarehouseTransactions> queryForReagent(Branch…...

GB/T 43887-2024 核级柔性石墨板材检测

核级柔性石墨板材是指以可膨胀石墨为原料、未经改性和增强、用于核工业的核级柔性石墨板材。 GB/T 43887-2024核级柔性石墨板材检测检测指标&#xff1a; 测试项目 测试标准 外观 GB/T 43887 尺寸偏差 GB/T 43887 化学成分 GB/T 43887 密度偏差 GB/T 43887 拉伸强度…...