关闭

Git标签管理

标签: git
1075人阅读 评论(0) 收藏 举报
分类:

我们可以针对某一次的提交打上一个标签,有点类似于给某次提交取个别名,比如1.0版本发布时打个标签叫v1.0,2.0版本发布时打个标签叫v2.0,因为每次版本提交的结果都是一连串的哈希码,不容易记忆,打上v1.0,v2.0这些具有某种含义的标签后,可以方便我们进行版本管理。

本文是Git系列的第七篇,了解前面的文章有助于更好的理解本文:


1.Git概述
2.Git基本操作
3.Git中的各种后悔药
4.Git分支管理
5.Git关联远程仓库
6.Git工作区储藏兼谈分支管理中的一个小问题


轻量级标签

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

首先我们可以通过如下命令来查看当前仓库中的所有标签:

$ git tag

打标签的方式很简单,直接通过git tag <tagname>来完成即可,如下命令:

$ git tag v1

表示创建了一个名为v1的tag,这个tag默认是创建在最新一次的commit上的,如下:

这里写图片描述

我们可以利用git show <tagname>来查看标签对应的版本信息,如下:

这里写图片描述

我们可以通过$ git tag -d <tagname>命令删除一个标签:

$ git tag -d v1

如下图:

这里写图片描述

如果我想给历史上的某次commit打一个标签呢?我们可以通过如下命令git tag <tagname> <commitversion>,如下:

$ git tag v0.0 7d519

表示给commit的哈希码为7d519的那一次commit打上一个标签,如下图:

这里写图片描述

含附注的标签

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

打一个含附注的标签很简单,使用git tag -a <tagname> -m <msg>命令,如下:

$ git tag -a v0.0 -m "文件初次建立" 7d519

如下:

这里写图片描述

如果不加最后的版本号参数,表示给最新的一次commit打标签。

签署标签

说到签署标签我们得先介绍一下GPG:

GPG是加密软件,可以使用GPG生成的公钥在网上安全的传播你的文件、代码。为什么说安全的?以Google所开发的repo为例,repo即采用GPG验证的方式,每个里程碑tag都带有GPG加密验证,假如在里程碑v1.12.3处你想要做修改,修改完后将这个tag删除,然后又创建同名tag指向你的修改点,这必然是可以的。但是,在你再次clone你修改后的项目时,你会发现,你对此里程碑tag的改变不被认可,验证失败,导致你的修改在这里无法正常实现。这就是GPG验证的作用,这样就能够保证项目作者(私钥持有者)所制定的里程碑别人将无法修改。那么,就可以说,作者的代码是安全传播的。为什么会有这种需求?一个项目从开发到发布,再到后期的更新迭代,一定会存在若干的稳定版本与开发版本(存在不稳定因素)。作为项目发起者、持有者,有权定义他(们)所认可的稳定版本,这个稳定版本,将不允许其他开发者进行改动。还以Google的repo项目为例,项目所有者定义项目开发过程中的点A为稳定版v1.12.3,那么用户在下载v1.12.3版本后,使用的肯定是A点所生成的项目、产品,就算其他开发者能够在本地对v1.12.3进行重新指定,指定到他们修改后的B点,但是最终修改后的版本给用户用的时候,会出现GPG签名验证不通过的问题,也就是说这样的修改是不生效的。

—-摘自<带GPG签名的Git tag>一文

使用签署标签我们先要生成GPG Key,生成命令如下:

$ gpg --gen-key

能默认的就直接按回车默认,不能默认的就根据提示输入相应的值,这里的都很简单,不再赘述。完了之后,就可以通过如下命令来打标签了:

$ git tag -s v0.0 -u "laowang" -m "文件初次建立" 7d519

就把上面的-a换成-s,然后添加-u参数,-u参数的值是我们在生成GPG Key的时候配置的name属性的值,注意-u参数不可以写错,否则标签会创建失败,如下:

这里写图片描述

如上图,-u参数写错时,标签创建失败。

标签推送到远程仓库

git push命令并不会把tag提交到远程仓库中去,需要我们手动提交,如下:

$ git push origin v0.0

表示将v0.0标签提交到远程仓库,也可以通过$ git push origin --tags提交所有的tag到远程仓库,如下:

这里写图片描述

此时别人调用git pull更新代码之后,就能看到我们的tag。如下:

这里写图片描述

Ok,Git标签管理我们先说这么多。有问题欢迎留言讨论。

参考资料:

1.《GitHub入门与实践》
2.《Pro Git》

更多JavaEE和Git资料请关注公众号:

这里写图片描述

0
0
查看评论

【Git/Github学习笔记】Git分支使用场景和标签管理、总结

【1】开发多个项目任务,比如说我有两个任务都比较紧急,任务1需要两天完成,任务2需要一天完成,而任务1是之前就已经开始进行的,任务二是中间加的新任务,所以需要第一天就完成任务2. 【2】master分支始终要保证可发布的状态,用dev分支和bug分支进行开发和错误调试,这样能够保证主干代码的干净、可...
  • u013035197
  • u013035197
  • 2016-08-02 01:14
  • 1191

Git教程4——Git标签管理

在版本回退里已经知道,每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支。截止到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支。HEAD严格来说不是指向提交,而是指向master,master才是指向提交的,所以,HEAD指向的就是当前分支。 分支的作用很强大,假...
  • xuemengrui12
  • xuemengrui12
  • 2016-08-16 13:43
  • 390

Git tag 标签管理

Git 的标签管理。跟大多数的 VCS 工具一样,git 也有在历史状态的关键点“贴标签”的功能,一般人们用这个功能来标记发布点(例如’v1.0′)。 列出git中现有标签 要想列出git中现有的所有标签,输入’git tag’命令运行即可: $ git tag v0.1 v1.3...
  • feosun
  • feosun
  • 2012-10-12 15:02
  • 22075

git标签管理

查询git tag查询指定标签git tag -l '匹配标签'查询标签信息git show <tagname>创建git tag <name>指定commit id打标签git log --pretty=oneline --abbrev-commit先列出历...
  • zgqxiexie
  • zgqxiexie
  • 2016-04-25 22:07
  • 134

git 标签管理

1.创建标签 切换到需要打标签的分支上$git branch $git checkout master Switch to branch 'master'然后git tag**就可以打一个新标签$ git tag v1.02.查看标签信息$git show v0.93.删除本地标签...
  • liuwengai
  • liuwengai
  • 2016-06-11 16:20
  • 196

Git 标签管理

发布一个版本时,我们通常先在版本库中打一个标签,这样,就唯一确定了打标签时刻的版本。将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来。所以,标签也是版本库的一个快照。 Git的标签虽然是版本库的快照,但其实它就是指向某个commit的指针(跟分支很像对不对?但是分支可以移...
  • u013649139
  • u013649139
  • 2015-10-02 12:01
  • 135

Git学习笔记(标签管理)

创建标签$git tag [-a|-s] <name> [-m <注释>] [commit id]注:如果要给标签加注释,则使用-a 参数,-s 参数生成PGP签名标签查看所有标签$git tag查看标签信息$git show <tagname> [-m <...
  • kobetmacone
  • kobetmacone
  • 2016-02-17 21:39
  • 175

git tag 标签完全用法(如何更好的管理你的分支)

打标签同大多数 VCS 一样,Git 也可以对某一时间点上的版本打上标签。人们在发布某个软件版本(比如 v1.0 等等)的时候,经常这么做。 本节我们一起来学习如何列出所有可用的标签,如何新建标签,以及各种不同类型标签之间的差别。列显已有的标签列出现有标签的命令非常简单,直接运行 git tag ...
  • philos3
  • philos3
  • 2017-05-30 22:01
  • 1384

Git 学习笔记 --- 标签管理

Git 学习笔记 --- 标签管理
  • qq812069449
  • qq812069449
  • 2016-08-26 17:06
  • 826

Git(十一)、标签管理

一、简介     1、发布一个版本时,通常需要先在版本库打一个标签(tag),这样就唯一确定了打标签时刻的版本。将来无论什么时候取某个标签的版本,就是把那个打标签时刻的历史版本取出来,所以,标签也是版本库的一个快照     2、Git的标签...
  • l294333475
  • l294333475
  • 2016-12-23 14:14
  • 269
    更多JavaEE资料请关注公众号
    个人资料
    • 访问:1931550次
    • 积分:18948
    • 等级:
    • 排名:第566名
    • 原创:326篇
    • 转载:1篇
    • 译文:2篇
    • 评论:1010条
    博客专栏
    最新评论