【Git原理与使用】-- 标签管理

目录

理解标签

创建标签

操作标签

删除

推送


理解标签

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

        用处:相较于难以记住的 commit id tag 很好的解决这个问题,因为 tag ⼀定要给⼀个让人容易记住,且有意义的名字。当我们需要回退到某个重要版本时,直接使用标签就能很快定位到。

创建标签

        在 Git 中打标签非常简单。首先,切换到需要打标签的分支上。然后,敲命令 git tag [name] 就可以打⼀个新标签。

[qcr@ecs-205826 remote---project]$ git branch
* master
[qcr@ecs-205826 remote---project]$ git tag v1.0
可以使用命令 git tag 查看所有标签。
[qcr@ecs-205826 remote---project]$ git tag
v1.0

        查看打了一个标签,对本地仓库的影响。

[qcr@ecs-205826 remote---project]$ tree .git
.git
├── branches
├── COMMIT_EDITMSG
├── config
├── description
├── FETCH_HEAD
├── HEAD
├── hooks
│   ├── applypatch-msg.sample
│   ├── commit-msg.sample
│   ├── post-update.sample
│   ├── pre-applypatch.sample
│   ├── pre-commit.sample
│   ├── prepare-commit-msg.sample
│   ├── pre-push.sample
│   ├── pre-rebase.sample
│   └── update.sample
├── index
├── info
│   └── exclude
├── logs
│   ├── HEAD
│   └── refs
│       ├── heads
│       │   └── master
│       └── remotes
│           └── origin
│               ├── HEAD
│               └── master
├── objects
│   ├── 0a
│   │   └── 6993b3df50a1aa1387b23186ac854f4da3001b
│   ├── 1e
│   │   └── ff76c90b1a1a244cbf0e278356c07f627474d0
│   ├── 3f
│   │   └── e4a1338f210805470d475d588dc82eb1c7032e
│   ├── 67
│   │   └── 5cc77ad3a0457477baeceaf34b0fc2e7e17b63
│   ├── 7b
│   │   └── 5bbd989152e5bab6b5476f50133e16137d6b30
│   ├── 9f
│   │   └── e2d15fba3cb4f104082c6d95176d31aa007972
│   ├── c3
│   │   └── 14d4d60463feca795fcc83b2b314a12d408787
│   ├── cd
│   │   └── c8ff98d8f653ce79386cea1ee536ea2cea3405
│   ├── e5
│   │   └── 32e80eaa632350e2e78337f46c9ce1a7313c56
│   ├── e6
│   │   └── 9de29bb2d1d6434b8b29ae775ad8c2e48c5391
│   ├── info
│   └── pack
│       ├── pack-5f4447002c72da3e6aa794706042883b44990aab.idx
│       └── pack-5f4447002c72da3e6aa794706042883b44990aab.pack
├── ORIG_HEAD
├── packed-refs
└── refs├── heads│   └── master├── remotes│   └── origin│       ├── HEAD│       └── master└── tags└── v1.026 directories, 38 files

        此处确确实实在我们的本地仓库的存了一个标签,并且通过对其内部的内容进行查看可以发现,是 commit id

[qcr@ecs-205826 remote---project]$ cat .git/refs/tags/v1.0 
e532e80eaa632350e2e78337f46c9ce1a7313c56

        通过 git log 查看,可以发现其是最新的 commit id

[qcr@ecs-205826 remote---project]$ git log --pretty=oneline
e532e80eaa632350e2e78337f46c9ce1a7313c56 创建.gitignore
0a6993b3df50a1aa1387b23186ac854f4da3001b update file.txt.
1eff76c90b1a1a244cbf0e278356c07f627474d0 创建file.txt
f5df974f5a426de32852efa01f95abf77dc142bd Initial commit

        默认标签是打在最新提交的 commit 上的。如果想在指定的 commit 上打标签,方法是找到历史提交的 commit id ,然后打上就可以了。

[qcr@ecs-205826 remote---project]$ git log --pretty=oneline --abbrev-commit
e532e80 创建.gitignore
0a6993b update file.txt.
1eff76c 创建file.txt
f5df974 Initial commit
[qcr@ecs-205826 remote---project]$ git tag v0.5 1eff76c
[qcr@ecs-205826 remote---project]$ git tag
v0.5
v1.0

Note:查看标签的顺序,不是按照 commit id 的时间来算的,而是根据英文单词排序的。

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

[qcr@ecs-205826 remote---project]$ git show v0.5
commit 1eff76c90b1a1a244cbf0e278356c07f627474d0
Author: chuanru <2390139574@qq.com>
Date:   Mon Jul 3 02:19:40 2023 +0800创建file.txtdiff --git a/file.txt b/file.txt
new file mode 100644
index 0000000..7b5bbd9
--- /dev/null
+++ b/file.txt
@@ -0,0 +1 @@
+hello Git

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

git tag -a [name] -m "XXX" [commit_id]
实际使用。
[qcr@ecs-205826 remote---project]$ git tag -a v0.1 -m "important tag:反正很重要" f5df974
[qcr@ecs-205826 remote---project]$ git tag
v0.1
v0.5
v1.0
[qcr@ecs-205826 remote---project]$ git show v0.1
tag v0.1
Tagger: chuanru <2390139574@qq.com>
Date:   Mon Jul 3 21:40:38 2023 +0800important tag:反正很重要commit f5df974f5a426de32852efa01f95abf77dc142bd
Author: 川入 <2390139574@qq.com>
Date:   Sun Jul 2 16:17:37 2023 +0000Initial commitdiff --git a/.gitee/ISSUE_TEMPLATE.zh-CN.md b/.gitee/ISSUE_TEMPLATE.zh-CN.md
new file mode 100644
index 0000000..f09d98d
--- /dev/null
+++ b/.gitee/ISSUE_TEMPLATE.zh-CN.md
@@ -0,0 +1,13 @@

操作标签

删除

        如果标签打错了,也可以删除。
[qcr@ecs-205826 remote---project]$ git tag
v0.1
v0.5
v1.0
[qcr@ecs-205826 remote---project]$ git tag -d v0.5
Deleted tag 'v0.5' (was 1eff76c)
[qcr@ecs-205826 remote---project]$ git tag
v0.1
v1.0

推送

       在远端仓库中也有标签的能力。

        因为创建的标签都只存储在本地,不会自动推送到远程。所以,打错的标签可以在本地安全删除。如果要推送某个标签到远程,使用命令 git push origin <tagname> 命令。

[qcr@ecs-205826 remote---project]$ git tag
v0.1
v1.0
[qcr@ecs-205826 remote---project]$ git push origin v0.1
Counting objects: 1, done.
Writing objects: 100% (1/1), 186 bytes | 0 bytes/s, done.
Total 1 (delta 0), reused 0 (delta 0)
remote: Powered by GITEE.COM [GNK-6.4]
To git@gitee.com:chuanru/remote---project.git* [new tag]         v0.1 -> v0.1

        如果我们本地有很多标签,也可以⼀次性的全部推送到远端。
[qcr@ecs-205826 remote---project]$ git push origin --tags
Total 0 (delta 0), reused 0 (delta 0)
remote: Powered by GITEE.COM [GNK-6.4]
To git@gitee.com:chuanru/remote---project.git* [new tag]         v1.0 -> v1.0
        如果标签已经推送到远程,要删除远程标签就麻烦一点,先从本地删除 (不建议直接在远端删除,即使可以) 。然后从远程删除,删除命令也是 git push
[qcr@ecs-205826 remote---project]$ git tag
v0.1
v1.0
[qcr@ecs-205826 remote---project]$ git tag -d v0.1
Deleted tag 'v0.1' (was 88ace8f)
[qcr@ecs-205826 remote---project]$ git push origin :v0.1
remote: Powered by GITEE.COM [GNK-6.4]
To git@gitee.com:chuanru/remote---project.git- [deleted]         v0.1

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

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

相关文章

LeetCode-每日一题【2095.删除链表的中间节点】

题目 给你一个链表的头节点 head 。删除 链表的 中间节点 &#xff0c;并返回修改后的链表的头节点 head 。 长度为 n 链表的中间节点是从头数起第 ⌊n / 2⌋ 个节点&#xff08;下标从 0 开始&#xff09;&#xff0c;其中 ⌊x⌋ 表示小于或等于 x 的最大整数。 对于 n 1、…

【C++】-vector的具体使用(迭代器失效问题)

&#x1f496;作者&#xff1a;小树苗渴望变成参天大树&#x1f388; &#x1f389;作者宣言&#xff1a;认真写好每一篇博客&#x1f4a4; &#x1f38a;作者gitee:gitee✨ &#x1f49e;作者专栏&#xff1a;C语言,数据结构初阶,Linux,C 动态规划算法&#x1f384; 如 果 你 …

ipa上架App Store【uniapp-ios】

前置条件&#xff1a;已获取到.mobileprovision描述文件、.p12证书并打包生成ipa包 &#xff08;如果还没获取证书、描述文件等可以去看我前两篇博客&#xff1a;uniapp-ios打包步骤 、uniapp-ios打包安装测试。一篇是已经付费了即已经注册了Apple Developer Program&#xf…

【网络安全带你练爬虫-100练】第8练:json数据的最小项提取

目录 一、目标1&#xff1a;爬取指定json中数据 二、目标2&#xff1a;循环取json中数据 三、目标3&#xff1a;提取每个数据中的某一项 四、网络安全小圈子 一、目标1&#xff1a;爬取指定json中数据 爬取data里数据 核心代码&#xff1a; dirt1 json.loads(res.text)pr…

哪家好用?四款国内外远程桌面软件横测:ToDesk、向日葵、TeamViewer、AnyDesk

一、前言 远程桌面软件对于职场人来说并不陌生&#xff0c;可以说是必备的办公软件之一。在经历过新冠疫情后&#xff0c;大家对于远程办公的认识越来越深入&#xff0c;也就在这段期间&#xff0c;远程桌面软件大范围的应用起来&#xff0c;真正走进大众视野并融入我们的工作和…

一纸文书之MySQL的回忆录

MySQL要点学习&#xff1a;你可以在简历上说熟悉MySQL 什么是数据库&#xff1f;什么是数据库管理系统&#xff1f;什么是MySQL&#xff1f;什么是SQL&#xff1f;数据库数据库管理系统&#xff1a;SQL&#xff1a;结构化查询语言三者之间的关系 安装MySQL数据库管理系统MySQL常…

【软件分析/静态分析】chapter6 课程08 指针分析(Pointer Analysis)

&#x1f517; 课程链接&#xff1a;李樾老师和谭天老师的&#xff1a; 南京大学《软件分析》课程08&#xff08;Pointer Analysis&#xff09;_哔哩哔哩_bilibili 目录 第六章 指针分析&#xff08;Pointer Analysis&#xff09; 6.1 为什么需要指针分析 6.2 指针分析的基本…

惊!ChatGPT处理文章仅需一秒钟,提取大纲、重写不在话下!

前言 在上篇文章中&#xff0c;我们实现了批量抓取到微信公众号文章的链接地址&#xff0c;那么这篇文章将继续为大家介绍&#xff0c;如何根据链接爬取到文章内容&#xff0c;并且利用chantGPT对文章进行处理。 爬取文章内容 我们已经有了很多文章的链接&#xff0c;这些链…

C# 使用HttpListener时候异常(此平台不支持此操作:System.PlatformNotSupportedException)

C# 使用HttpListener时候异常&#xff08;此平台不支持此操作&#xff1a;System.PlatformNotSupportedException&#xff09; 代码&#xff1a; HttpListener listener new HttpListener(); 错误&#xff1a; System.PlatformNotSupportedException: Operation is not su…

(四)Kafka 消费者

文章目录 1. Kafka 消费者相关概念消费者和消费者组&#xff08;1&#xff09;横向伸缩消费者&#xff08;2&#xff09;横向伸缩消费者组 分区再平衡再均衡的类型&#xff08;1&#xff09;主动再均衡&#xff08;2&#xff09;协作再均衡&#xff08;增量再均衡&#xff09; …

Kubernetes对象深入学习之二:细说schema.ObjectKind

欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码)&#xff1a;https://github.com/zq2599/blog_demos 在前文咱们对对象体系有了大概了解&#xff0c;接下来就要按照前面换分的三个知识区域逐个深入学习&#xff0c;今天从最简单的对象类型开始 runtime.Object…

C语言 数组

1. 数组的地址 1.1 一维数组的地址 int a[5];&#xff08;1&#xff09; &a[0]第0个元素的地址a第0个元素的地址&a整个一维数组的地址 &#xff08;2&#xff09;&a[0] a &a&#xff1b; &#xff08;3&#xff09; &a[0] 1跳过一个数组元素a …