Git标签管理

发布一个版本时,我们通常会在版本库中打上一个标签,这样,就唯一确定了打标签时刻的版本了,将来无论什么时候,取某个标签的版本,就是

把那个打标签的时刻的历史版本取出来,所以,标签也是版本库的一个快照,Git的标签虽然是版本库的快照,但其实它就是指向某个commit的指针

(跟分支很像,但是分支可以移动,标签不能移动),所以创建和删除一个标签都是在一瞬间完成的。

在Git中打标签非常简单,首先切换到需要打标签的分支上:

输入git tag name 就可以打一个新的标签:

$ git tag v1.0

可以用命令git tag 查看所有的标签:

$ git tag
v1.0

默认标签是打在最新提交的commit上的。有时候,如果忘记打标签,那怎么办?

方法就是找到历史提交的commit id ,然后打上就可以了

$ git log --pretty=oneline --abbrev-commit
dbfc0ee merge bug fix 119
b4d16ef bug 119 had fix
8e64728 merge with no-ff
4f4f23a dev commit
f3d8f1e branch merge
4bb4c5a master branch merge test
cccee34 newbranch first commit
0d0bbca dev first commit
d5aea29 master first commit
023ee21 Initial commit

比如要对“branch merge”这次提交打上标签,它对应的commit id是"f3d8f1e",敲入命令:

$ git tag v0.9 f3d8f1e

查看下所有的标签:

[email protected] MINGW32 /c/gitskill (master)
$ git tag
v0.9
v1.0

注意:标签不是按照时间顺序列出的,而是按照字母的顺序列出的,可以用git show tagname查看标签信息:

$ git show v1.0
commit dbfc0eebcb89072cf76cdda1eccea37c8b22db73
Merge: 8e64728 b4d16ef
Author: mars <[email protected]>
Date: Tue May 24 18:04:26 2016 +0800

merge bug fix 119

还可以创建带有说明的标签,用-a指定标签名,-m指定说明文字:

[email protected] MINGW32 /c/gitskill (master)
$ git tag -a v0.1 -m "version 0.1 released" cccee34

[email protected] MINGW32 /c/gitskill (master)
$ git tag
v0.1
v0.9
v1.0

[email protected] MINGW32 /c/gitskill (master)
$ git show v0.1
tag v0.1
Tagger: mars <[email protected]>
Date: Tue May 24 22:37:10 2016 +0800

version 0.1 released

commit cccee3487123b38970e76b95c43269661248c528
Author: mars <[email protected]>
Date: Tue May 24 15:40:12 2016 +0800

newbranch first commit

还可以通过-s用私钥签名一个标签:

$ git tag -s v0.2 -m "signed version 0.2 released" 8e64728

签名采用PGP签名,因此,必须首先安装gpg(GnuPG),如果没有找到gpg,或者没有gpg秘钥对,就会报错:

[email protected] MINGW32 /c/gitskill (master)
$ git tag -s v0.2 -m "signed version 0.2 released" 8e64728
gpg: WARNING: using insecure memory!
gpg: please see http://www.gnupg.org/documentation/faqs.html for more information
gpg: directory `/c/Users/LV/.gnupg‘ created
gpg: new configuration file `/c/Users/LV/.gnupg/gpg.conf‘ created
gpg: WARNING: options in `/c/Users/LV/.gnupg/gpg.conf‘ are not yet active during this run
gpg: keyring `/c/Users/LV/.gnupg/secring.gpg‘ created
gpg: keyring `/c/Users/LV/.gnupg/pubring.gpg‘ created
gpg: skipped "mars <[email protected]>": secret key not available
gpg: signing failed: secret key not available
error: gpg failed to sign the data
error: unable to sign the tag

生成GPG Key
gpg --gen-key 按提示自己生成

生成签名标签:

$ git tag -u "Mars Lv" -s v0.2 -m "signed version 0.2 released" 8e64728

生成后的签名标签:

$ git show v0.2
tag v0.2
Tagger: mars <[email protected]>
Date: Tue May 24 23:40:01 2016 +0800

signed version 0.2 released
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1

iQIcBAABAgAGBQJXRHXRAAoJEKqD3K/XnFBf/4wP/jy7oclw+74r5VsUTVJydoiT
T9URpqOMTE/S3GokphhXo6eNpY8HC1Yd3keyXSU10U74QdkwH92f62ZAlSZOOWVw
MbjkXGlk6sQdsiFCnihsnRtbxDg0PYf5nDtJFCIZXtmZOeJ/43UudzKxL+23nNLM
qfdoOpenYZoTUaGWSMxJTYRKIVICoD8awB5R1AA71Dysv7yEfaGZKk1cHX4Bu3Tj
a+kpRx6D0WWZLz4pj6NRvtVyeGtbWACtJJy/Rr3RhmhognlOxDAZecdJ3Jxs1qAt
tKOGiKp1xWsEwRCTnanArMPf5NAjvIMzgG8roV2NvRXPu26lknM1fb9Yb4/SNeE1
cLAvRj1PxzDIwQEEZdb0og3hPtrfaAEqwM8re70iB9iEI/1IyrV4L+/7Lp9ebONO
qNIuSHMxropkxAaQzgknWEVmSDWfydmY8M5oD8NGMMZOZpqhtfeGORP+5SRWkyg7
AoZSivx1wvzUH+2CzOjchf7Z+ZBqynNkB+CZxo1gtLOnrNkiiMnVlUIRYvRObgog
ExHvcAWBR9gajSHQDFNkvL8kJYkw6M5Rjg1Je6R+GZqfyrV/krKMjs+P74cuUCi0
D/b51gE48ZBu6lD8VKY5mw0jGlWM67A+n79OwFMNTK+f4eP+rUXYIXa2pDFE1zbj
oU7mTnHEkNUVQIeuyVLo
=4Ml3

[email protected] MINGW32 /c/gitskill (master)
$ git tag -v v0.2
object 8e647284624ec4ae666bebcdce784aa5db8d39d6
type commit
tag v0.2
tagger mars <[email protected]> 1464104401 +0800

signed version 0.2 released
gpg: WARNING: using insecure memory!
gpg: please see http://www.gnupg.org/documentation/faqs.html for more information
gpg: Signature made 2016年05月24日 23:40:01 using RSA key ID D79C505F
gpg: Good signature from ""Mars Lv" (GPG key for Mars) <[email protected]>"

-u, --local-user <key-id> 使用另一个Key签名此tag,“Mars Lv”是我生成的key-id

时间: 2024-09-30 03:04:04

Git标签管理的相关文章

2016/01/14开始学习git:标签管理:操作标签

一.删除本地标签 如果标签打错了,也可以删除:git tag -d v0.1 因为创建的标签都只存储在本地,不会自动推送到远程.所以,打错的标签可以在本地安全删除. 二.推送标签如果要推送某个标签到远程,使用命令git push origin <tagname>:git push origin v1.0或者,一次性推送全部尚未推送到远程的本地标签:git push origin --tags 三.删除远程标签如果标签已经推送到远程,要删除远程标签就麻烦一点,先从本地删除:git tag -d

2016/01/14开始学习git:标签管理:创建标签

标签也是版本库的一个快照指向某个commit的指针(分支可以移动,标签不能移动) 切换到需要打标签的分支上git tag <name>就可以打一个新标签: $ git tag v1.0 git tag查看所有标签: $ git tagv1.0 打之前提交的版本的commit需要当时的commit ID$ git tag v0.9 93ddf60 查看tag$ git tagv0.9v1.0 标签不是按时间顺序列出,而是按字母排序的.可以用git show <tagname>查看标签

git 标签管理

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

Git学习 -- 标签管理

新建标签 git tag <tagname>   默认为HEAD,也可以指定一个commit id eg.   git tag v0.9  git tag v1.0 31aa59c git tag <tagname> -m "xxx"   可以指定标签信息 git tag -s <tagname>             可以用PGP签名标签 查看标签 git tag     查看所有标签 git show <tagname>    参看

Git 学习笔记&lt;远程仓库与标签管理&gt; (四)

什么是远程仓库? 就像第一章介绍的那样,远程仓库可以储存你编写的所有源码和资源文件. 甚至也可以当网盘使,不过当然有很多契合git管理文本的特性. 下面就要以 github 为示例远程仓库进行介绍.  (也可以自己弄一台服务器作远程仓库). 创建仓库 在主页找到 +New repository 或者右上角的加号里有.输入名字 描述 然后没钱只能public就能确定了.然后呢,点名字打开你的仓库.(主页右下角可以找到) 关于与远程仓库的连接 首先你打开你的保险箱得先证明身份吧,不然我怎么知道你是客

Git 学习(七)标签管理

Git 学习(七)标签管理 发布版本时,通常会先在版本库中打一个标签,这样,就唯一确定了打标签时刻的版本.取出某个标签的版本,就是把那个打标签的时刻的历史版本取出来.所以,标签也是版本库的一个快照. Git的标签虽然是版本库的快照,但其实它就是指向某个commit的指针(跟分支雷同,但分支可以移动,标签不可):创建和删除标签都是瞬间完成的. 本文具体说明 Git 中是如何创建标签及操作标签的. 创建标签 Git 标签的命令很简单,首先简单浏览下方的 Git 命令: git tag        

Git学习笔记(8)——标签管理

本文主要记录的Git标签的作用.标签的多种创建方式,以及标签的删除,与推送,和使用GitHub的Fork参与别人的项目. 标签的作用 发布版本时,通常先在版本库中打一个标签,这样,就唯一确定了打标签时刻的版本.无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来.所以,标签也是版本库的一个快照.Git的标签虽然是版本库的快照,但其实它就是指向某个commit的指针(跟分支很像,但是分支可以移动,标签不能移动),所以,创建和删除标签都是瞬间完成的. 创建标签 [email pro

git分支、标签管理与别名

笔记内容:git分支.标签管理与别名笔记日期:2018-01-15 22.9 分支管理 22.10 远程分支管理 22.11 标签管理 22.12 git别名 22.9 分支管理 分支管理是git比较重要的一个概念,平时用的也比较多.我们先来在本地的仓库里操作一下分支: [[email protected] ~]# cd /data/gitroot/ [[email protected] /data/gitroot]# git branch # 查看当前仓库的分支,*表示当前的分支是哪一个 *

IOS Git源代码管理工具

1.新建一个"本地仓库" $ git init 2.配置仓库 >告诉git你是谁 git config user.name lnj >告诉git怎么联系你 git config user.email [email protected] >上面一种配置方式是一次性的配置, 会配置到被管理文件的.git文件夹下 >下面一种配置方式是一劳永逸的方式: git config --global user.name lmj git config --global user.