文档章节

Git详解之 Git 标签

fokYaland
 fokYaland
发布于 2015/06/04 17:27
字数 940
阅读 21
收藏 0
git
打标签
列出现有标签
git tag
我们可以用特定的搜索模式列出符合条件的标签
git tag -l 'v1.4.2.*'

新建标签
Git 使用的标签有两种类型: 轻量级的(lightweight)含附注的(annotated)。轻量级标签就像是个不会变化的分支,实际上它就是个指向特 定提交对象的引用。而含附注标签,实际上是存储在仓库中的一个独立对象,它有自身的校验和信息,包含着标签的名字,电子邮件地址和日期,以及标签说明,标签本身也允许使用 GNU Privacy Guard (GPG) 来签署或验证。一般我们都建议使用含附注型的标签,以便保留相关信息;当然,如果只是临时性加注标签,或者不需要旁注额外信息,用轻量级标签也没问题。
创建一个含附注类型的标签
git tag -a v1.4 -m 'my version 1.4'

使用 git show 命令查看相应标签的版本信息,并连同显示打标签时的提交对象
git show v1.4

轻量级标签
$ git tag v1.4-lw

切换到标签
与切换分支命令相同,
git checkout [tagname] 


签署标签
如果你有自己的私钥,还可以用 GPG 来签署标签,window需要从http://www.gnupg.org/ 安装Gpg4win 
git tag -s v1.5 -m 'my signed 1.5 tag'

再运行 git show 会看到对应的 GPG 签名也附在其内:
$ git show v1.5


验证标签
可以使用   git tag -v [tag-name] 的方式验证已经签署的标签。此命令会调用 GPG 来验证签名,所以你需要有签署者的公钥,存放在 keyring 中,才能验证。还好,Git的设计者想到了解决办法:可以把key(既公钥)作为blob变量写入Git库,然后把它的内容直接写在标签里。gpg --list-keys命令可以显示出你所拥有的key:
gpg --list-keys
/Users/schacon/.gnupg/pubring.gpg
---------------------------------
pub   1024D/ F721C45A  2009-02-09 [expires: 2010-02-09]
uid                  Scott Chacon 

然后,导出key的内容并经由管道符传递给git hash-object,之后钥匙会以blob类型写入Git中,最后返回这个blob量的SHA-1值:

$   gpg -a --export F721C45A | git hash-object -w --stdin
659ef797d181633c87ec71ac3f9ba29fe5775b92
现在你的Git已经包含了这个key的内容了,可以通过不同的SHA-1值指定不同的key来创建标签。

$ git tag -a maintainer-pgp-pub 659ef797d181633c87ec71ac3f9ba29fe5775b92
在运行git push --tags命令之后,maintainer-pgp-pub标签就会公布给所有人。如果有人想要校验标签,他可以使用如下命令导入你的key:

$ git show maintainer-pgp-pub | gpg --import
人们可以用这个key校验你签名的所有标签。另外,你也可以在标签信息里写入一个操作向导,用户只需要运行git show 查看标签信息,然后按照你的向导就能完成校验。

后期加注标签
可以在后期对早先的某次提交加注标签。比如在下面展示的提交历史中:
git log --pretty=oneline
15027957951b64cf874c3557a0f3547bd83b3ff6 Merge branch 'experiment'
a6b4c97498bd301d84096da251c98a07c7723e65 beginning write support
0d52aaab4479697da7686c15f77a3d64d9165190 one more thing
6d52a271eda8725415634dd79daabbc4d9b6008e Merge branch 'experiment'
0b7434d86859cc7b8c3d5e1dddfed66ff742fcbc added a commit function
4682c3261057305bdd616e23b64b0857d832627b added a todo file
166ae0c4d3f420721acbb115cc33848dfcc2121a started write support
9fceb02d0ae598e95dc970b74767f19372d61af8 updated rakefile
964f16d36dfccde844893cac5b347e7b3d44abbc commit the todo
8a5cbc430f1a9c3d00faaeffd07798508422908a updated readme
我们忘了在提交 “updated rakefile” 后为此项目打上版本号 v1.2,没关系,现在也能做。只要在打标签的时候跟上对应提交对象的校验和(或前几位字符)即可:
git tag -a v1.2 9fceb02

分享标签
默认情况下,git push 并不会把标签传送到远端服务器上,只有通过显式命令才能分享标签到远端仓库
git push origin v1.5
如果要一次推送所有本地新增的标签上去
git push origin --tags

本文转载自:http://blog.csdn.net/yanliang1/article/details/12110927

fokYaland
粉丝 4
博文 68
码字总数 3062
作品 0
东城
私信 提问
git与码云的使用

这里只做简单记录 git与码云的结合使用 1、先安装git 2、设置git用户名和邮箱,用于提交到远端时,知道是谁提交的 git config --global user.name "xx" git config --global user.email "xx@...

So_care_about_y
2017/10/29
0
0
Git详解之二 Git基础

Git 基础 读完本章你就能上手使用 Git 了。本章将介绍几个最基本的,也是最常用的 Git 命令,以后绝大多数时间里用到的也就是这几个命令。读完本章,你就能初始化一个新的代码仓库,做一些适...

小代码2016
2015/12/06
125
0
Git使用详解

1.1 关于版本控制 1.2 Git 简史 1.3 Git 基础 1.4 命令行 1.5 安装 Git 1.6 初次运行 Git 前的配置 1.7 获取帮助 1.8 总结 2.1 Git 基础 - 获取 Git 仓库 2.2 Git 基础 - 记录每次更新到仓库...

Bony
2016/05/17
41
0
Git详解之二 Git基础(第二部分)

移动文件 不像其他的 VCS 系统,Git 并不跟踪文件移动操作。如果在 Git 中重命名了某个文件,仓库中存储的元数据并不会体现出这是一次改名操作。不过 Git 非常聪明,它会推断出究竟发生了什么...

面码
2014/04/27
133
0
【转】Git详解之二 Git基础

Git 基础 读完本章你就能上手使用 Git 了。本章将介绍几个最基本的,也是最常用的 Git 命令,以后绝大多数时间里用到的也就是这几个命令。读完本章,你就能初始化一个新的代码仓库,做一些适...

季牧云
2012/06/15
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

cleanLastUpdated.bat

@echo offrem create by AnXiaole rem 这里写你的仓库路径set REPOSITORY_PATH=C:\Users\AnXiaole\.m2\repositoryrem 正在搜索...for /f "delims=" %%i in ('dir /b /s "%REPO......

安小乐
28分钟前
6
0
操作放大器的用法是什么?

  有区别   1、单级放大的倍数比较有限,一般在100倍以下。放大倍数很大的话,负反馈就比较浅,对于放大倍数的稳定性不利。假如需要放大倍数更高,就不得不动用多级放大电路了。单级放大...

仙溪
30分钟前
3
0
c++ 上传文件 curl

bool uploadFile(std::string url, std::string file, std::string auth) { boost::filesystem::path p(file); CURL *curl; CURLcode res; struct curl_httppost *for......

青黑
36分钟前
3
0
冒泡与插入排序的代码实现

// 冒泡排序,a 表示数组,n 表示数组大小public void bubbleSort(int[] a, int n) { if (n <= 1) return; for (int i = 0; i < n; ++i) { // 提前退出冒泡循环的标志位 ...

无名氏的程序员
39分钟前
4
0
centos7.6 +mhvtl1.6安装

以前的mhvtl都是在centos6.x,5.x上安装的mhvtl以前版本为1.4,现在最新的1.6出来,可以安装在centos7.6上,下面是安装过程: 1.安装基础包 centos7.6只要能上外网,默认是配置了yun源的,这些...

突突突酱
41分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部