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.mzph.cn/news/638382.shtml

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

相关文章

20240116使用Firefly的AIO-3399J的预编译的Android10固件确认RT5640声卡信息

20240116使用Firefly的AIO-3399J的预编译的Android10固件确认RT5640声卡信息 2024/1/16 17:55 百度&#xff1a;RK3399 ALC5640 RK3399 RT5640 BING&#xff1a;RK3399 ALC5640 LINE-IN接麦克风不会有声音的。 耳机只有右边有声音&#xff0c;但是偏小&#xff0c;可以通过音量…

C++ memmove 学习

memmove&#xff0c;将num字节的值从源指向的位置复制到目标指向的内存块。 允许目标和源有重叠。 当目标区域与源区域没有重叠则和memcpy函数功能相同。 宽字符版本是wmemmove&#xff0c;安全版本加_s&#xff1b; #include "stdafx.h" #include<iostream&g…

如何为不同品牌的笔记本电脑设置充电限制,这里提供详细步骤

笔记本电脑的电池健康状况至关重要。延长电池寿命可以帮你省下不少钱。对于长时间充电的Windows 11笔记本电脑用户来说,将电池电量限制在80%是很重要的。 虽然操作系统没有提供设置自定义电池充电限制的内置方法,但仍有一些方法可以在Windows 11中配置电池设置,并将其限制在…

华南理工大学数字信号处理实验实验一(薛y老师版本)matlab源码

一、实验目的 1、加深对离散信号频谱分析的理解&#xff1b; 2、分析不同加窗长度对信号频谱的影响&#xff1b; 3、理解频率分辨率的概念&#xff0c;并分析其对频谱的 影响&#xff1b; 4、窗长和补零对DFT的影响 实验源码&#xff1a; 第一题&#xff1a; % 定义离散信…

【多线程的安全问题】synchronized 和 volatile——你必须知道的妙用!

&#x1f4c4;前言&#xff1a;本文的主要内容是讨论个人在多线程编程带来的安全问题的表现、原因以及对应的解决方法。 文章目录 一. 了解多线程安全问题二. 线程不安全的现象及原因&#x1f346;1. 修改共享的数据&#xff08;根本原因&#xff09;&#x1f345;2. 原子性&am…

class_14:继承

C继承有点类似于c语言 结构体套用 #include <iostream> #include <string> using namespace std;//基类,父类 class Vehicle{ public:string type;string contry;string color;double price;int numOfWheel;void run();void stop(); };//派生类&#xff0c…

commit 历史版本记录修正

commit 历史版本记录修正 当 Bug 发生的时候&#xff0c;我们会需要去追踪特定 bug 的历史记录&#xff0c;以查出该 bug 真正发生的原因&#xff0c;这个时候就是版本控制带来最大价值的时候。 因此&#xff0c;要怎样维持一个好的版本记录是非常重要的&#xff0c;下面是一…

Rockchip linux USB 驱动开发

Linux USB 驱动架构 Linux USB 协议栈是一个分层的架构&#xff0c;如下图 5-1 所示&#xff0c;左边是 USB Device 驱动&#xff0c;右边是 USB Host 驱动&#xff0c;最底层是 Rockchip 系列芯片不同 USB 控制器和 PHY 的驱动。 Linux USB 驱动架构 USB PHY 驱动开发 USB 2…

手机也能随时随地玩红警啦!

还在为找不到红警安装包苦恼吗&#xff1f; 现在可以随时随地&#xff0c;无论手机、ipad、电脑都可以无需安装包在线玩红警啦&#xff01;&#xff01; 不仅能本地单机玩耍&#xff0c;还能联网玩耍&#xff08;可以和老外一起玩哦&#xff5e;&#xff09; 具体在线链接可…

算法第二十一天-丑数

丑数 题目要求 解题思路 首先判断数字是不是为0或者负数&#xff0c;两者均不可能成为丑数&#xff1b; 之后对n进行不断整除&#xff0c;直到无法除尽为止。 简单判断最后的数是不是1即可。 代码 class Solution:def isUgly(self, n: int) -> bool:if n<0:return Fa…

Linux启动流程梳理值得收藏

Linux启动流程总的来说可以分成三个阶段 Linux启动流程图 第一步&#xff1a;上电 在 x86 系统中&#xff0c;将 1M 空间最上面的 0xF0000 到 0xFFFFF 这 64K 映射给 ROM。 当电脑刚加电的时候&#xff0c;会做一些重置的工作&#xff0c;将 CS 设置为 0xFFFF&#xff0c;将 IP…

Docker命令---搜索镜像

介绍 使用docker命令搜索镜像。 命令 docker search 镜像命令:版本号示例 以搜索ElasticSearch镜像为例 docker search ElasticSearch

【unity】麦克风声音驱动,控制身体做出不同动作

1.在角色对象上挂在animator组件&#xff0c;并将动作控制器与其关联 2.在角色对象上挂在audio source组件。 3.新建voice control脚本&#xff0c;编写代码如下&#xff1a; using System; using System.Collections; using System.Collections.Generic; using UnityEngine;…

复现PointNet++(语义分割网络):Windows + PyTorch + S3DIS语义分割 + 代码

一、平台 Windows 10 GPU RTX 3090 CUDA 11.1 cudnn 8.9.6 Python 3.9 Torch 1.9.1 cu111 所用的原始代码&#xff1a;https://github.com/yanx27/Pointnet_Pointnet2_pytorch 二、数据 Stanford3dDataset_v1.2_Aligned_Version 三、代码 分享给有需要的人&#xf…

算法专题[递归-搜索-回溯-2-DFS]

算法专题[递归-搜索-回溯-2-DFS] 一.计算布尔二叉树的值&#xff1a;1.思路一&#xff1a;2.GIF题目解析 二.求根节点到叶子节点的数字之和1.思路一&#xff1a;2.GIF题目解析 三.二叉树剪枝1.思路一&#xff1a;2.GIF题目解析 四.验证二叉搜索树1.思路一&#xff1a;2.GIF题目…

1.2 数据模型

数据模型是对现实世界数据特征的抽象&#xff0c;是现实世界的模拟 数据模型是用来描述数据、组织数据和对数据进行操作的 数据模型应满足三方面要求&#xff1a; 1 能比较真实地模拟现实世界 2 容易为人所理解 3 便于在计算机上实现 数据模型…

08. Springboot集成webmagic实现网页爬虫

目录 1、前言 2、WebMagic 3、Springboot集成Webmagic 3.1、创建Springboot&#xff0c;并引入webmagic依赖 3.2、定义PageProcessor 3.3、元素选择 3.3.1、F12查看网页元素 3.3.2、元素选择 3.3.3、注意事项 4、小结 1、前言 在信息化的时代&#xff0c;网络爬虫已…

QT的绘图系统QPainterDevice与文件系统QIODevice

QT的绘图系统&#xff08;QPainterDevice&#xff09;与文件系统&#xff08;QIODevice&#xff09; 文章目录 1、Qt 的绘图系统1、QPainter的使用2、QPen(画笔&#xff09;及QBursh&#xff08;画刷&#xff09;3、手动更新窗口4、绘图设备1、四种绘图设备的 区别2、 QBitmap3…

零食折扣店,注定昙花一现?

年终岁末&#xff0c;又到了各类休闲零食产品一年一度的销售旺季。与过去不同的是&#xff0c;近年来的休闲零食赛道正因大量零食折扣店的涌现而显得热闹非凡。 随着主打折扣、低价的零食折扣店成为消费者特别是三四线下沉市场消费者的新宠&#xff0c;资本开始涌入并快速推动…

SpringCloud之OpenFeign的学习、快速上手

1、什么是OpenFeign OpenFeign简化了Http的开发。在RestTemplate的基础上做了封装&#xff0c;在微服务中的服务调用发送网络请求起到了重要的作用&#xff0c;简化了开发&#xff0c;可以让我们跟写接口一样调其他服务。 并且OpenFeign内置了Ribbon实现负载均衡。 官方文档…