Git基础学习之标签tag的使用详解

目录
  • 1、标签介绍
  • 2、列出标签
  • 3、创建标签
    • (1)标签的分类
    • (2)附注标签
    • (3)轻量标签
  • 4、后期打标签

1、标签介绍

软件的某个发行版本所对应的,其实就是软件开发过程中,某一个阶段的最后一次git commit提交。我们知道每一个提交操作,对应的都会生成一个commit-id,而标签就是与某一个commit-id绑定的名称。一个标签一旦与某一个commit-id绑定,那么该标签就不能修改绑定到其它commit-id了,除非将该标签删除后才可以与其commit-id绑定。

标签对象(tag object) 非常类似于一个提交对象,它包含一个标签创建者信息、一个日期、一段注释信息,以及一个指针。 主要的区别在于,标签对象通常指向一个提交对象,而不是一个树对象。 它像是一个永不移动的分支引用,永远指向同一个提交对象,只不过给这个提交对象加上一个更友好的名字罢了。

像其他版本控制系统(VCS)一样,Git 可以给仓库历史中的某一个提交打上标签,以示重要。 比较有代表性的是,人们会使用这个功能来标记发布结点( v1.0 、 v2.0 等等),我们也可以称标签tag为里程碑。

2、列出标签

在 Git 中列出已有的标签非常简单,只需要输入 git tag (可带上可选的 -l 选项 --list):

$ git tag
v1.0
v2.0

这个命令以字母顺序列出标签,但是它们显示的顺序并不重要。

查看具体标签的详情,使用命令:git show 标名称

你也可以按照特定的模式查找标签。 例如,Git 自身的源代码仓库包含标签的数量超过 500 个。 如果只对1.8.5 系列感兴趣,可以运行:

$ git tag -l "v1.8.5*"
v1.8.5
v1.8.5-rc0
v1.8.5-rc1
v1.8.5-rc2
v1.8.5.1
v1.8.5.2
v1.8.5.3

提示:

如果你只想查看完整的标签列表,运行 git tag 命令,会默认以列表的方式展现版本库中的标签。

如果你提供了一个匹配标签名的通配模式,如上"v1.8.5*",那么 -l 或 --list 选项就是强制要使用的。

3、创建标签

(1)标签的分类

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

轻量标签:很像一个不会改变的分支,它只是某个特定提交的引用。

附注标签:轻量标签只有标签名称,而使用附注标签,还可以为标签添加说明。

  • 是存储在 Git 数据库中的一个完整对象, 它们是可以被校验的,其中包含打标签者的名字、电子邮件地址、日期时间, 此外还有一个标签信息,并且可以使用GNU Privacy Guard (GPG)签名并验证。
    提示:GPG是一种加密算法,现在Github支持提交使用GPG加密,从而保证提交的数据,在传输的过程中没有被篡改。
  • 通常会建议创建附注标签,这样你可以拥有以上所有信息。
  • 但是如果你只是想用一个临时的标签, 或者因为某些原因不想要保存这些信息,那么也可以用轻量标签。
  • 创建附注标签,就会产生Git中的第四种对象:tag对象。

(2)附注标签

在 Git 中创建附注标签十分简单。

执行命令:git tag -a 标签名 -m '说明信息'

提示:这是在最新一次提交打上,打标签。即若不指定标签绑定的commit-id,则默认为HEAD指针所指向的提交。

-a选项意为"创建一个带注解的标签"。 (a 即 annotated 的缩写)

不用-a 选项也可以执行的,但该标签不会记录这标签是什么时候打的,谁打的,也不会让你给该标签添加注解。

我推荐一直创建带注解的标签。

$ git tag -a v1.4 -m "my version 1.4"
$ git tag
v1.3
v1.4

-m 选项指定该标签的说明信息(必须)。

如果你创建标签的时候,没有指定说明信息,Git 会启动编辑器要求你输入信息。

通过使用 git show 命令,可以看到标签信息和与之对应的提交信息:

$ git show v1.4
tag v1.4
Tagger: Ben Straub <ben@straub.cc>	# 打标记的人
Date:   Sat May 3 20:19:12 2014 -0700	# 打标机的实际

my version 1.4	# 标记的说明信息

# 以下是标记所对应的commit对象的信息
commit ca82a6dff817ec66f44342007202690a93763949
Author: Scott Chacon <schacon@gee-mail.com>
Date:   Mon Mar 17 21:52:11 2008 -0700

    changed the version number

输出显示了打标签者的信息、打标签的日期时间、标记说明信息,然后显示具体的提交信息。

(3)轻量标签

轻量标签本质上是将提交校验和存储到一个文件中,而没有保存任何其他信息。

执行命令:git tag 标签名

创建轻量标签,不需要使用 -a-s(创建GPG签名) 或 -m 选项,只需要提供标签名字:

$ git tag v1.4-lw
$ git tag
v1.3
v1.4
v1.4-lw

这时,如果在标签上运行 git show 命令,你不会看到额外的标签信息。

只会显示出对应的提交信息,如下:

$ git show v1.4-lw
commit ca82a6dff817ec66f44342007202690a93763949
Author: Scott Chacon <schacon@gee-mail.com>
Date:   Mon Mar 17 21:52:11 2008 -0700

    changed the version number

4、后期打标签

你也可以对过去的某个提交打标签。

版本库提交历史如下:

L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ git log --oneline --graph
*   3110083 (HEAD -> master) 第7次提交,完成dev分支的新功能
|\
| * e94af28 第6次提交,修改dev和readme文件
| * 9eb3224 第4次提交,dev分支开发 dev.txt文件
* | 0690030 第5次提交,新增内容:branch test v4
|/
* b97ccfd 第3次提交,新增内容:branch test v3
* f72a9fe 第2次提交,新增内容:branch test v2
* fa2439a 第1次提交,新增readme.txt文件

现在假设你在第3次提交的位置,忘记给项目打标签,你可以在后边的任何时间,在该位置补上标签。

但是要注意,第3次提交的校验和,要加入到命令之中。

执行命令:git tag -a 标签名 commit-id -m '说明信息'

# 1.打标签
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ git tag -a v1.0 b97ccfd -m 'v1.0 里程碑'

# 2.版本库提交历史
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ git log --oneline --graph
*   3110083 (HEAD -> master) 第7次提交,完成dev分支的新功能
|\
| * e94af28 第6次提交,修改dev和readme文件
| * 9eb3224 第4次提交,dev分支开发 dev.txt文件
* | 0690030 第5次提交,新增内容:branch test v4
|/
* b97ccfd (tag: v1.0) 第3次提交,新增内容:branch test v3	# 看这行
* f72a9fe 第2次提交,新增内容:branch test v2
* fa2439a 第1次提交,新增readme.txt文件

我们在版本库的历史提交信息中,可以看到你已经在第3次提交上打上了标签。

我们再来查看一下,v1.0这个标签的信息。

$ git show v1.0
tag v1.0
Tagger: sun_wk <sun_wk@126.com>
Date:   Sun Apr 18 17:12:53 2021 +0800

v1.0 里程碑

commit b97ccfd5f3e98c12ab9c0fb4ca4b308e6805f7ed (tag: v1.0)
Author: sun_wk <sun_wk@126.com>
Date:   Fri Apr 16 22:07:47 2021 +0800

    第3次提交,新增内容:branch test v3

提示:轻量标签执行命令:git tag 标签名 commit-id

到此这篇关于Git基础学习之标签tag的使用详解的文章就介绍到这了,更多相关Git 标签tag内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Git标签管理

    前面的话 发布一个版本时,我们通常先在版本库中打一个标签(tag).这样,就唯一确定了打标签时刻的版本.将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来.所以,标签也是版本库的一个快照,实质上它就是指向某个commit的指针.所以,创建和删除标签都是瞬间完成的.简而言之,标签tag就是一个让人容易记住的有意义的名字,它跟某个commit绑在一起.本文将详细介绍Git标签管理 创建标签 在Git中打标签非常简单,首先,切换到需要打标签的分支上 然后,敲命令git tag

  • git标签管理_动力节点Java学院整理

    发布一个版本时,我们通常先在版本库中打一个标签(tag),这样,就唯一确定了打标签时刻的版本.将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来.所以,标签也是版本库的一个快照. Git的标签虽然是版本库的快照,但其实它就是指向某个commit的指针(跟分支很像对不对?但是分支可以移动,标签不能移动),所以,创建和删除标签都是瞬间完成的. Git有commit,为什么还要引入tag? "请把上周一的那个版本打包发布,commit号是6a5819e..." &qu

  • Android studio git创建与删除标签(Tag)的教程详解

    git上的标签一般是用于标记版本,当发布新版本后,便将该版本的代码打上Tag,用以区别及管理 使用标签前需要先将代码提交到远程仓库上 创建并提交Tag 远程端提交后: 使用Git 命令删除Tag Android Studio上没发现界面化的删除Tag操作 定位到项目根路径(该项目.git 文件夹所在处) 右键打开Git Bash 输入 git tag 查看本地tag 输入 git tag -d v1.0.3 删除本地名为"v1.0.3"的Tag 输入 git push origin –

  • Git中tag标签的使用教程

    目录 一.tag简介 二.tag使用命令 1.列出所有tag 2.查看tag信息 3.创建tag 4.创建带注释tag 5.推送tag 6.特定commit_id创建tag 7.删除tag 8.检出tag 9.切换tag 10.为之前提交的添加tag 11.重命名tag 一.tag简介 tag是git版本库的一个标记,指向某个commit的指针.tag主要用于发布版本的管理,一个版本发布之后,我们可以为git打上 v.1.0.1 ,v.1.0.2 …这样的标签.tag感觉跟branch有点相似,

  • Git 教程之标签详解

    Git 标签 如果你达到一个重要的阶段,并希望永远记住那个特别的提交快照,你可以使用 git tag 给它打上标签. 比如说,我们想为我们的 w3cschoolcc 项目发布一个"1.0"版本. 我们可以用 git tag -a v1.0 命令给最新一次提交打上(HEAD)"v1.0"的标签. -a 选项意为"创建一个带注解的标签". 不用 -a 选项也可以执行的,但它不会记录这标签是啥时候打的,谁打的,也不会让你添加个标签的注解. 我推荐一直创

  • Git Tag 标签详解

    Git Tag 标签 git tag 按字母排序显示标签 git tag v1.01 打上v1.01这个标签 git show v1.01 显示这个标签的详情 可以同时打多个tag指向同一个时间点上的版本 git push origin --tags 推送本地所有新增标签到远端 ps:下面看下git命令之git tag 给当前分支打标签 列出标签 $ git tag # 在控制台打印出当前仓库的所有标签 $ git tag -l 'v0.1.*' # 搜索符合模式的标签 打标签 git标签分为两

  • Git 标签使用详解

    Git跟其他版本控制系统一样,可以打标签(tag)标记一个版本号. 发布一个版本时,我们通常先在版本库中打一个标签,这样,就唯一确定了打标签时刻的版本.将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来.所以,标签也是版本库的一个快照. Git的标签虽然是版本库的快照,但其实它就是指向某个commit的指针(跟分支很像对不对?但是分支可以移动,标签不能移动),所以,创建和删除标签都是瞬间完成的. 一.列出标签 1. 列出当前仓库的所有标签:git tag 2. 列出所有标

  • Git基础学习之分支操作的示例详解

    目录 1.新建一个分支并且使分支指向指定的提交对象 2.思考 3.项目分叉历史的形成 4.分支的总结 1.新建一个分支并且使分支指向指定的提交对象 使用命令:git branch branchname commitHash. 我们现在本地库中只有一个 master 分支,并且在 master 分支有三个提交历史. 需求:创建一个 testing 分支,并且testing 分支指向 master 分支第二个版本. # 1.查看提交历史记录 L@DESKTOP-T2AI2SU MINGW64 /j/

  • MySQL数据库基础学习之JSON函数各类操作详解

    目录 前言 一.JSON语法规则 二.JSON函数 1.JSON_CONTAINS(json_doc,value)函数 2.JSON_SEARCH()函数 3.JSON_PRETTY(json_doc)函数 4.JSON_DEPTH(json_doc)函数 5.JSON_LENGTH(json_doc[,path])函数 6.JSON_KEYS(json_doc[,path])函数 7. JSON_INSERT(json_doc,path,val[,path,val] ...)函数 8.JSON

  • Python基础学习之时间转换函数用法详解

    本文实例讲述了Python基础学习之时间转换函数用法.分享给大家供大家参考,具体如下: 前言 python的时间格式分为多种,几种格式之间的转换方法时常是我们遇到的而且是经常忘记的点,python不像php,时间字符串和datetime是一起的,只需要strtotime和date函数就可以相互转化.虽然网上已经有很多python时间转换的文章,但是由于作者本人经常做海外业务,需要各种时区之间的转换,所以这篇文章会对按时区转换各种时间格式做一个总结. 转换方法图示(图片转自网络): 一.字符串转时

  • Python基础学习之函数和代码复用详解

    目录 Python函数和代码复用 一.函数的定义 二.函数的调用 三.函数的参数传递 1.形式参数与实际参数 2.位置传参与关键字传参 3.可变对象与不可变对象的参数传递 4.个数可变的位置.关键字参数 5.函数参数总结(一) 6.函数参数总结(二) 四.函数的返回值 五.变量的作用域 六.代码复用 七.递归函数 1.什么是递归函数 2.递归的组成部分 3.递归的调用过程 4.递归的优缺点 八.总结 Python函数和代码复用 什么是函数:   函数是一段具有特定功能的,可重用的语句组,通过函数

  • C#基础学习系列之Attribute和反射详解

    前言 本文主要给大家介绍了关于C#基础之Attribute和反射的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. Attribute(特性) Attribute是C#的一种语言特性,用于为各种实体(class,field,property)附加一些说明性信息, 并且可以在运行时环境中检索这些信息(通过反射). 所有的Attribute必须继承自Attribute类,按照约定,特性类的名称带有 Attribute 后缀.使用特性时可以包含或省略此后缀. Attribut

  • Kotlin基础学习之lambda中return语句详解

    前言 当我们爱上lambda并且大范围使用它的时候,我想大家都会被lambda中的return语句狠狠地调戏过,所以今天我们需要一起来揭开lambda中return的神秘面纱. 首先来看一个例子: fun demo() { val indexes = arrayOf(1, 2, 3, 4, 5, 6, 7) indexes.forEach { if (it > 5) { return } println(it) } println("End") } 按照我们的预期,调用demo后

  • Git基础学习之tag标签操作详解

    目录 共享标签 推送本地的指定标签 推送本地所有为推送的标签 查看结果 删除标签 删除本地标签 删除远程标签 修改标签指定提交的代码 标签在.git目录中的位置 本文中所使用到的命令 共享标签 默认情况下,git push 命令并不会传送标签到远程仓库服务器上. 在创建完标签后,你必须显式地(手动)推送标签到远程服务器上. 需要将标签推送到远程版本库作为一个发行版本,可以通过以下两种方式: 推送本地的指定标签 这个过程就像共享远程分支一样,你可以执行命令: git push origin <ta

  • Java基础学习之标签

    一.语法 label: @Test public void test3() { inner: for (int i = 0; i < 5; i++) { if (i == 3) { break inner; } System.out.println(i); } System.out.println("结尾"); } 注意: 标签只能在for循环上面,中间不要插入语句 因此,标签应放在循环语句前,之间不应有其他语句. 二.控制循环 continue会退回最内层的循环开头, 并继续执

  • Git基础学习之文件删除操作命令详解

    目录 1.删除文件说明 2.删除文件操作 (1)仅删除暂存区的文件 (2)完全删除文件 3.本文用到的命令总结 1.删除文件说明 在Git工作目录中要删除某个文件,首先要清楚该文件所处的状态. 若要是该文件未被Git管理,在工作区直接进行删除即可.(不演示) 但是,若该文件已经经过多次git add与git commit操作后,就必须要从已跟踪文件清单中删除(确切地说,是在暂存区中删除),然后提交. 可以用git rm命令完成此项工作,并连带从工作目录中删除指定的文件,这样文件之后就不会出现在未

  • Git基础学习之分支基本操作详解

    目录 1.创建分支 (1)创建分支 (2)图示理解 2.查看分支列表 3.分支切换 4.查看所有分支的最后一个提交 5.删除分支 1.创建分支 (1)创建分支 Git 是怎么创建新分支的呢? 很简单,就是要创建一个可以移动的新的指针. 比如,创建一个testing分支, 你需要使用命令:git branch testing. 示例: # 1.查看本地版本库历史提交 L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) $ gi

随机推荐