新建标签
Git 使用的标签有两种类型:轻量级的(lightweight)和含附注的(annotated)。
轻量级标签就像是个不会变化的分支,实际上它就是个指向特定提交对象的引用。
而含附注标签,实际上是存储在仓库中的一个独立对象,它有自身的校验和信息,包含着标签的名字,电子邮件地址和日期,以及标签说明,标签本身也允许使用 GNU Privacy Guard (GPG) 来签署或验证。
一般我们都建议使用含附注型的标签,以便保留相关信息;
当然,如果只是临时性加注标签,或者不需要旁注额外信息,用轻量级标签也没问题。
1.含附注的标签
创建一个含附注类型的标签非常简单,用-a
(译注:取annotated
的首字母)指定标签名字即可:
$ git tag -a v1.0 -m 'my version 1.0'
使用git tag
命令查看标签 :
$ git tag
v1.0
而-m
选项则指定了对应的标签说明,Git 会将此说明一同保存在标签对象中。如果没有给出该选项,Git 会启动文本编辑软件供你输入标签说明。
可以使用git show
命令查看相应标签的版本信息,并连同显示打标签时的提交对象。
$ git show v1.0
tag v1.0
Tagger: IDeepspace <[email protected]>
Date: Thu Sep 28 12:02:47 2017 +0800
my version 1.0
commit 6e318d8d880789581b78befbf1e0544630eb2970
Merge: c77e828 15486a1
Author: IDeepspace <[email protected]>
Date: Thu Sep 28 00:48:26 2017 +0800
merge with no-ff
我们可以看到在提交对象信息上面,列出了此标签的提交者和提交时间,以及相应的标签说明。
2.轻量级标签
轻量级标签实际上就是一个保存着对应提交对象的校验和信息的文件。要创建这样的标签,一个-a
,-s
或-m
选项都不用,直接给出标签名字即可:
$ git tag v1.1
$ git tag
v1.0
v1.1
现在运行git show
查看此标签信息,就只有相应的提交对象摘要:
$ git show v1.1
commit 6e318d8d880789581b78befbf1e0544630eb2970
Merge: c77e828 15486a1
Author: IDeepspace <[email protected]>
Date: Thu Sep 28 00:48:26 2017 +0800
merge with no-ff
3.后期加注标签
我们可以在后期对早先的某次提交加注标签
默认标签是打在最新提交的commit上的。有时候,如果忘了打标签,比如,现在已经是周五了,但应该在周一打的标签没有打,怎么办?
方法是找到历史提交的commit id,然后打上就可以了:
$ git log --pretty=oneline --abbrev-commit
6e318d8 merge with no-ff
15486a1 add merge
c77e828 conflict fixed
9d27459 & simple
f64e72b AND simple
2b76425 readme.txt
现在我们对add merge
这次提交打标签,它对应的commit id
是15486a1
,这样做:
$ git tag v0.9 15486a1
查看标签 :
$ git tag
v0.9
v1.0
v1.1
注意,标签不是按时间顺序列出,而是按字母排序的。可以用git show <tagname>
查看标签信息:
$ git show v0.9
commit 15486a14fba65f630cbdd95802ddc62e4eaebad6
Author: IDeepspace <[email protected]>
Date: Thu Sep 28 00:46:52 2017 +0800
add merge
diff --git a/readme.txt b/readme.txt
index 1fe7682..cf2f02c 100644
--- a/readme.txt
+++ b/readme.txt
@@ -2,5 +2,5 @@ Git is a distributed version control system.
Git is free software.
Git has a mutable index called stage.
Git tracks changes of files.
-Creating a new branch is quick and simple.
+Creating a new branch is quick and simple
可以看到,v0.9
标签已经打在add merge
这次提交上了.