tag 标签

tag 标签

在使用 Git 版本控制的过程中,会产生大量的版本。如果我们想对某些重要版本进行记录,就可以给仓库历史中的某一个commit 打上标签,用于标识。

在本章中,我们将会学习如何列出已有的标签、如何创建和删除新的标签、以及标签的类型。

基本概念

事实上,标签只是用来记录某一个「commit 对象」的 hash 值,以一个比较好记的名称来帮助我们记住某个版本。

Git 支持两种标签:轻量标签(lightweight)与附注标签(annotated)。

tag 相关的文件在 .git/refs/tag 文件夹中,文件名就是 tag 名。

轻量标签

轻量标签很像一个不会改变的分支 —— 它只是某个特定「commit 对象」的引用。

在这里插入图片描述

在这里插入图片描述

但是如果我们通过 git cat-file -p <tagName> 来查看标签的内容,就会发现内容其实是一个「commit 对象」,这就是前面提到的轻量标签只是某个特定「commit 对象」的引用,最终还是会指向这个「commit 对象」:

在这里插入图片描述

附注标签

而标注标签则是一个 git 对象,在 git 中的概念 文章介绍了 Git 中存在的 4 种对象。

附注标签对象包含打标签者的名字、电子邮件地址、日期时间, 此外还有一个标签信息,并且可以使用 GNU Privacy Guard (GPG)签名并验证。

通常会建议创建附注标签,这样我们可以拥有以上所有信息,并且可以永久保存在 .git 文件夹中(储存到仓库中的 Git 对象都是不变的,只有索引才是变动的)。但是如果我们只是想用一个临时的标签, 或者因为某些原因不想要保存这些信息,那么也可以用轻量标签。

在这里插入图片描述

从上图可以看到 beta-v1.1 文件的内容与最新「commit 对象」的 hash 值不同,这时通过 cat-file 命令就可以发现这个 hash 值对应的是一个「tag 对象」:

在这里插入图片描述

可以看到「tag 对象」内存在一个对象 hash 值,就是最新「commit 对象」的 hash 值,第二行的 type commit 就是介绍上一行的对象的类型是一个「commit 对象」,这代表我们也可以把任何 Git 对象都建立成一个标签对象。

git tag <tagName> -a 会将当前的 HEAD 指针指向的版本建立成「tag 对象」,如果要将其他特定对象建立为标签的用法为 git tag <tagName> <hashId>

创建标签

创建标签的命令非常简单,就是 git tag <tagName>,不过这是创建轻量标签的方式,如果要创建附注标签则需要带上 -a 参数,同时还要跟 commit 命令一样带上 -m 参数指定了一条将会存储在标签中的信息,如果没有为附注标签指定一条信息,Git 会启动编辑器要求我们输入信息(如果只有使用 -m 参数时 Git 会默认把 -a 也帮我们加上)。

在这里插入图片描述

为之前的版本创建版本

git tag <tagName> 命令都是在当前的 HEAD 指针指向的版本进行标记,如果我们想要为之前的版本进行标记,可以在命令后面加上 <hashId>。

在这里插入图片描述

假设我们要为第一次的 commit 添加一个标签,可以执行 git tag -a <tagName> <hashId>,例如git tag -a beta-v0.0 8954

在这里插入图片描述

查看标签

使用 git tag 可以查看所有的标签:

在这里插入图片描述

按照通配符列出标签需要 -l 或 --list 选项

如果我们只想要完整的标签列表,那么运行 git tag 就会默认假定我们想要一个列表,它会直接给我们列出来, 此时的 -l 或 --list 是可选的。

然而,如果我们提供了一个匹配标签名的通配模式,那么 -l 或 --list 就是强制使用的。

而使用 git show <tagName> 命令就可以查看某个标签的具体信息:

在这里插入图片描述

删除标签

要删除掉我们本地仓库上的标签,可以使用命令 git tag -d <tagName>:

在这里插入图片描述

注意上述命令并不会从任何远程仓库中移除这个标签

推送标签

新增

默认情况下,git push 命令并不会传送标签到远程仓库上。 在创建完标签后我们必须显式地推送标签到远程仓库。 这个过程就像推送分支一样 —— 我们可以运行 git push origin <tagName>。

在这里插入图片描述

如果想要一次性推送很多标签,也可以使用 git push origin --tags (带上 --tags 参数)。 这将会把所有不在远程仓库上的标签全部推送上去。

在这里插入图片描述

删除

跟新增标签一样,我们在删除标签时,也只是在本地仓库上进行操作,也需要推送到远程仓库中才能删除远程仓库中的标签:

使用 git push origin --delete <tagName> 命令即可:

在这里插入图片描述

签出标签

如果我们想查看某个标签所指向的文件版本,可以使用 git checkout <tagName> 命令, 但是这会使我们的仓库处于“分离头指针(detached HEAD)”的状态,在这种状态下,如果我们做了某些更改然后提交它们,标签不会发生变化, 但我们的新提交将不属于任何分支,并且将无法访问,除非通过确切的 hash 值才能访问。 因此,如果我们需要进行更改,比如我们要修复旧版本中的错误,那么通常需要创建一个新分支:

在这里插入图片描述

若想查询 git tag 的完整用法,可执行 git help tag 即可显示完整的文件说明。

地址

文章仓库地址:https://github.com/leopord-lau/easy-git

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【动态规划】【广度优先搜索】【状态压缩】847 访问所有节点的最短路径

作者推荐 视频算法专题 本文涉及知识点 动态规划汇总 广度优先搜索 状态压缩 LeetCode847 访问所有节点的最短路径 存在一个由 n 个节点组成的无向连通图&#xff0c;图中的节点按从 0 到 n - 1 编号。 给你一个数组 graph 表示这个图。其中&#xff0c;graph[i] 是一个列…

数学建模学习笔记||层次分析法

评价类问题 解决评价类问题首先需要想到一下三个问题 我们评价的目标是什么我们为了达到这个目标有哪几种可行方案评价的准则或者说指标是什么 对于以上三个问题&#xff0c;我们可以根据题目中的背景材料&#xff0c;常识以及网上收集到的参考资料进行结合&#xff0c;从而筛…

问题:Feem无法发送信息OR无法连接(手机端无法发给电脑端)

目录 前言 问题分析 资源、链接 其他问题 前言 需要在小米手机、华为平板、Dell电脑之间传输文件&#xff0c;试过安装破解的华为电脑管家、小米的MIUI文件传输等&#xff0c;均无果。&#xff08;小米“远程管理”ftp传输倒是可以&#xff0c;但速度太慢了&#xff0c;且…

js实现九九乘法表

效果图 代码 <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title></head><body><script type"text/javascript">// 输出乘法口诀表// document.write () 空格 " " 换行…

java黑马学习笔记

数组 变量存在栈中&#xff0c;变量值存放在堆中。 数组反转 public class test{public static void main(String[] args){//目标&#xff1a;完成数组反转int[] arr {10,20,30,40,50};for (int i 0,j arr.length - 1;i < j;i,j--){int tep arr[j]; //后一个值赋给临时…

微前端-无界wujie

无界微前端方案基于 webcomponent 容器 iframe 沙箱&#xff0c;能够完善的解决适配成本、样式隔离、运行性能、页面白屏、子应用通信、子应用保活、多应用激活、vite 框架支持、应用共享等用户的核心诉求。 主项目安装无界 vue2项目&#xff1a;npm i wujie-vue2 -S vue3项目…

wayland(xdg_wm_base) + egl + opengles 最简实例

文章目录 前言一、ubuntu 下相关环境准备1. 获取 xdg_wm_base 依赖的相关文件2. 查看 ubuntu 上安装的opengles 版本3. 查看 weston 所支持的 窗口shell 接口种类二、xdg_wm_base 介绍三、egl_wayland_demo1.egl_wayland_demo2_0.c2.egl_wayland_demo3_0.c3. xdg-shell-protoco…

深耕文档型数据库12载,SequoiaDB再开源

1月15日&#xff0c;巨杉数据库举行SequoiaDB新特性及开源项目发布活动。本次活动回顾了巨杉数据库深耕JSON文档型数据库12年的发展历程与技术演进&#xff0c;全面解读了SequoiaDB包括在高可用、安全、实时、易用性四个方向的技术特性&#xff0c;宣布了2024年面向技术社区的开…

Qt事件过滤

1.相关说明 监控鼠标进入组件、出组件、点击组件、双击组件的事件&#xff0c;需要重写eventFilter函数 2.相关界面 3.相关代码 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui-&…

Vue——计算属性

文章目录 计算属性computed 计算属性 vs methods 方法计算属性完整写法 综合案例&#xff1a;成绩案例 计算属性 概念&#xff1a;基于现有的数据&#xff0c;计算出来的新属性。依赖的数据变化&#xff0c;自动重新计算 语法: ①声明computed配置项中&#xff0c;一个计算属性…

Mac NTFS 磁盘读写工具选哪个好?Tuxera 还是 Paragon?

在使用 Mac 电脑时&#xff0c;我们经常需要读写 NTFS 格式的硬盘或 U 盘。然而&#xff0c;由于 Mac 系统不支持 NTFS 格式的读写&#xff0c;因此我们需要借助第三方工具来实现这个功能。而在市场上&#xff0c;Tuxera 和 Paragon 是两款备受推崇的 Mac NTFS 磁盘读写工具。那…

C++入门学习(八)sizeof关键字

sizeof 是 C 和 C 中的一个运算符&#xff0c;用于确定特定类型或对象的内存大小&#xff08;以字节为单位&#xff09;。 1、查看数据类型占据内存大小 #include <iostream> using namespace std; int main() {short a 1;int b 1;long c 1;long long d 1;cout<…

超级菜鸟怎么学习数据分析?

如果你有python入门基础&#xff0c;在考虑数据分析岗&#xff0c;这篇文章将带你了解&#xff1a;数据分析人才的薪资水平&#xff0c;数据人应该掌握的技术栈。 首先来看看&#xff0c;我在搜索数据分析招聘时&#xff0c;各大厂开出的薪资&#xff1a; 那各大厂在数据领域…

论文阅读_CogTree_推理的认知树

英文名称: From Complex to Simple: Unraveling the Cognitive Tree for Reasoning with Small Language Models中文名称: 从复杂到简单&#xff1a;揭示小型语言模型推理的认知树链接: http://arxiv.org/abs/2311.06754v1代码: https://github.com/alibaba/EasyNLP作者: Junbi…

Unity学习-逐帧图集动画制作

首先在文件部分创建一个Sprite Library Asset 然后点击创建出来的文件 点下面的加号添加对应的图 添加完成之后点一下Apply 然后新建一个物体 添加这三个组件 其中SpriteLibrary里面 把你刚刚创建的图集文件拉过来 Sprite Resolver选择对应的动作和图片 然后开始制作动画 An…

Jupyter-Notebook无法创建ipynb文件

文章目录 概述排查问题恢复方法参考资料 概述 用户反馈在 Notebook 上无法创建 ipynb 文件&#xff0c;并且会返回以下的错误。 报错的信息是: Unexpected error while saving file: Untitled5.ipynb attempt to write a readonly database 排查问题 这个是一个比较新的问…

项目解决方案:某城区(区县)社会面视频监控资源接入汇聚解决方案

目 录 一、概述 二、建设目标及需求 1.建设目标 2.需求分析 2.1 总体需求 2.2 需求细化 三、方案设计 1.设计依据 2.设计原则 3.设计方案 3.1.方案描述 3.2.组网说明 四、产品介绍 1.视频监控综合资源管理平台介绍 2.视频录像服务器和存储 2.1…

Python语法进阶——类

Python中的数据类型都属于类。int、str、list都是Python定义好的数据类型类。 print(type(list))#<class type> print(type(list()))#<class list> 一、自定义数据类型 一、语法 class 类名():pass #类名 要求首字母大写 #()可写可省略。 #pass在这里只是用来保证…

代码随想录算法训练营第三天 | 链表理论基础 203.移除链表元素 707.设计链表 206.反转链表

链表理论基础 链表是一种通过指针串连在一起的线性结构&#xff0c;每一个节点由两部分组成&#xff0c;一个是数据域&#xff0c;一个是指针域&#xff08;存放指向下一个节点的指针&#xff09;。最后一个节点的指针指向 null。链表的存储方式&#xff1a;数组在内存中是连续…

【C++干货基地】namespace超越C语言的独特魅力(文末送书)

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 引入 哈喽各位铁汁们好啊&#xff0c;我是博主鸽芷咕《C干货基地》是由我的襄阳家乡零食基地有感而发&#xff0c;不知道各位的…