`
wbj0110
  • 浏览: 1604751 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

打标签

    博客分类:
  • Git
Git 
阅读更多

同大多数 VCS 一样,Git 也可以对某一时间点上的版本打上标签。人们在发布某个软件版本(比如 v1.0 等等)的时候,经常这么做。本节我们一起来学习如何列出所有可用的标签,如何新建标签,以及各种不同类型标签之间的差别。

列显已有的标签

列出现有标签的命令非常简单,直接运行 git tag 即可:

$ git tag
v0.1
v1.3

显示的标签按字母顺序排列,所以标签的先后并不表示重要程度的轻重。

我们可以用特定的搜索模式列出符合条件的标签。在 Git 自身项目仓库中,有着超过 240 个标签,如果你只对 1.4.2 系列的版本感兴趣,可以运行下面的命令:

$ git tag -l 'v1.4.2.*'
v1.4.2.1
v1.4.2.2
v1.4.2.3
v1.4.2.4

新建标签

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

含附注的标签

创建一个含附注类型的标签非常简单,用 -a (译注:取 annotated 的首字母)指定标签名字即可:

$ git tag -a v1.4 -m 'my version 1.4'
$ git tag
v0.1
v1.3
v1.4

-m 选项则指定了对应的标签说明,Git 会将此说明一同保存在标签对象中。如果没有给出该选项,Git 会启动文本编辑软件供你输入标签说明。

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

$ git show v1.4
tag v1.4
Tagger: Scott Chacon <schacon@gee-mail.com>
Date:   Mon Feb 9 14:45:11 2009 -0800

my version 1.4

commit 15027957951b64cf874c3557a0f3547bd83b3ff6
Merge: 4a447f7... a6b4c97...
Author: Scott Chacon <schacon@gee-mail.com>
Date:   Sun Feb 8 19:02:46 2009 -0800

    Merge branch 'experiment'

我们可以看到在提交对象信息上面,列出了此标签的提交者和提交时间,以及相应的标签说明。

签署标签

如果你有自己的私钥,还可以用 GPG 来签署标签,只需要把之前的 -a 改为 -s (译注: 取 signed 的首字母)即可:

$ git tag -s v1.5 -m 'my signed 1.5 tag'
You need a passphrase to unlock the secret key for
user: "Scott Chacon <schacon@gee-mail.com>"
1024-bit DSA key, ID F721C45A, created 2009-02-09

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

$ git show v1.5
tag v1.5
Tagger: Scott Chacon <schacon@gee-mail.com>
Date:   Mon Feb 9 15:22:20 2009 -0800

my signed 1.5 tag
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.8 (Darwin)

iEYEABECAAYFAkmQurIACgkQON3DxfchxFr5cACeIMN+ZxLKggJQf0QYiQBwgySN
Ki0An2JeAVUCAiJ7Ox6ZEtK+NvZAj82/
=WryJ
-----END PGP SIGNATURE-----
commit 15027957951b64cf874c3557a0f3547bd83b3ff6
Merge: 4a447f7... a6b4c97...
Author: Scott Chacon <schacon@gee-mail.com>
Date:   Sun Feb 8 19:02:46 2009 -0800

    Merge branch 'experiment'

稍后我们再学习如何验证已经签署的标签。

轻量级标签

轻量级标签实际上就是一个保存着对应提交对象的校验和信息的文件。要创建这样的标签,一个 -a-s-m 选项都不用,直接给出标签名字即可:

$ git tag v1.4-lw
$ git tag
v0.1
v1.3
v1.4
v1.4-lw
v1.5

现在运行 git show 查看此标签信息,就只有相应的提交对象摘要:

$ git show v1.4-lw
commit 15027957951b64cf874c3557a0f3547bd83b3ff6
Merge: 4a447f7... a6b4c97...
Author: Scott Chacon <schacon@gee-mail.com>
Date:   Sun Feb 8 19:02:46 2009 -0800

    Merge branch 'experiment'

验证标签

可以使用 git tag -v [tag-name] (译注:取 verify 的首字母)的方式验证已经签署的标签。此命令会调用 GPG 来验证签名,所以你需要有签署者的公钥,存放在 keyring 中,才能验证:

$ git tag -v v1.4.2.1
object 883653babd8ee7ea23e6a5c392bb739348b1eb61
type commit
tag v1.4.2.1
tagger Junio C Hamano <junkio@cox.net> 1158138501 -0700

GIT 1.4.2.1

Minor fixes since 1.4.2, including git-mv and git-http with alternates.
gpg: Signature made Wed Sep 13 02:08:25 2006 PDT using DSA key ID F3119B9A
gpg: Good signature from "Junio C Hamano <junkio@cox.net>"
gpg:                 aka "[jpeg image of size 1513]"
Primary key fingerprint: 3565 2A26 2040 E066 C9A7  4A7D C0C6 D9A4 F311 9B9A

若是没有签署者的公钥,会报告类似下面这样的错误:

gpg: Signature made Wed Sep 13 02:08:25 2006 PDT using DSA key ID F3119B9A
gpg: Can't check signature: public key not found
error: could not verify the tag 'v1.4.2.1'

后期加注标签

你甚至可以在后期对早先的某次提交加注标签。比如在下面展示的提交历史中:

$ 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 tag
v0.1
v1.2
v1.3
v1.4
v1.4-lw
v1.5

$ git show v1.2
tag v1.2
Tagger: Scott Chacon <schacon@gee-mail.com>
Date:   Mon Feb 9 15:32:16 2009 -0800

version 1.2
commit 9fceb02d0ae598e95dc970b74767f19372d61af8
Author: Magnus Chacon <mchacon@gee-mail.com>
Date:   Sun Apr 27 20:43:35 2008 -0700

    updated rakefile
...

分享标签

默认情况下,git push 并不会把标签传送到远端服务器上,只有通过显式命令才能分享标签到远端仓库。其命令格式如同推送分支,运行 git push origin [tagname] 即可:

$ git push origin v1.5
Counting objects: 50, done.
Compressing objects: 100% (38/38), done.
Writing objects: 100% (44/44), 4.56 KiB, done.
Total 44 (delta 18), reused 8 (delta 1)
To git@github.com:schacon/simplegit.git
* [new tag]         v1.5 -> v1.5

如果要一次推送所有本地新增的标签上去,可以使用 --tags 选项:

$ git push origin --tags
Counting objects: 50, done.
Compressing objects: 100% (38/38), done.
Writing objects: 100% (44/44), 4.56 KiB, done.
Total 44 (delta 18), reused 8 (delta 1)
To git@github.com:schacon/simplegit.git
 * [new tag]         v0.1 -> v0.1
 * [new tag]         v1.2 -> v1.2
 * [new tag]         v1.4 -> v1.4
 * [new tag]         v1.4-lw -> v1.4-lw
 * [new tag]         v1.5 -> v1.5

现在,其他人克隆共享仓库或拉取数据同步后,也会看到这些标签。

http://git-scm.com/book/zh/Git-%E5%9F%BA%E7%A1%80-%E6%89%93%E6%A0%87%E7%AD%BE

分享到:
评论

相关推荐

    在UniApp中集成Lodop实现APP打印标签功能-库文件源代码

    在本资源中,我们将介绍如何使用Lodop在UniApp中打印标签,包括如何定义标签样式、打印内容和打印方式等。此外,我们还将提供一些示例代码和相关的技术资料,帮助读者更好地理解和掌握该技术的实现原理和应用场景。 ...

    VB 调用 Codesoft 模板打印标签

    VB 调用 Codesoft 模板打印标签 VB 调用 Codesoft 模板打印标签是利用 VB 编程语言调用 Codesoft 模板打印标签的功能。下面是相关的知识点: 一、TkxOleCtrlEx.ocx 控件 TkxOleCtrlEx.ocx 是一个 ActiveX 控件,...

    Labview 调用Bartender打印标签_打印_bartender_labviewbartender_labview_la

    Bartender是一款专业的企业级标签设计和打印软件,广泛应用于条形码、二维码、RFID标签的设计与打印。当我们需要在LabVIEW程序中实现自动化的标签打印时,可以通过调用Bartender的相关功能来实现。下面将详细解释这...

    C# 调用Codesoft打印标签的简单示例

    在本文中,我们将深入探讨如何使用C#编程语言调用Codesoft软件来打印标签。Codesoft是一款专业的条形码和二维码标签设计与打印软件,它提供了丰富的图形和数据功能,适用于各种工业和商业应用场景。在C#环境中,我们...

    C#调用CodeSoft打印标签 使用斑马打印机

    在IT行业中,尤其是在自动化生产和物流管理领域,打印标签是一项至关重要的任务。本文将详细探讨如何使用C#编程语言调用CodeSoft软件,并结合斑马打印机实现动态二维码的打印。斑马打印机以其高质量、高效率和易用性...

    C++调用Bartender模板进行打印标签

    本文将详细介绍如何使用C++编程语言调用Bartender软件模板来实现自动打印标签的功能。Bartender是一款强大的条码标签设计和打印软件,广泛应用于物流、制造、零售等领域。通过C++与Bartender的接口交互,我们可以...

    WinForm PrintDocument 进行打印标签,案例

    WinForm PrintDocument 进行打印标签,案例 原文链接:https://daolizhe.blog.csdn.net/article/details/107134180 希望对大家有帮助,不懂的可以私聊询问

    surfaceview 打标签修改版

    这个特性使得SurfaceView非常适合用于需要高性能、低延迟图像处理的应用场景,例如视频播放、游戏或者我们这里的“打标签”功能。 在Android UI设计中,标签(Tag)通常用来关联数据或者标识一个组件,它们可以存储...

    人工智能-项目实践-文本标签-文本标注工具,给文本打标签

    人工智能-项目实践-文本标签-文本标注工具,给文本打标签 功能介绍 1、为当前文本打标签(可以多个) 2、提取文本中的“地名”、“人名”、“中心词”。(每项均可有多个值) -----------------------------------...

    深度学习训练图片,给图像打标签软件

    "给图像打标签软件"正是为了解决这个问题,它允许用户方便地对图像进行注释,添加类别标签,以便后续用于训练模型。 图像标注软件通常具有以下功能: 1. **图形界面**:提供用户友好的图形界面,使得非编程背景的...

    Android源码,一个小功能,类似nice打标签的功能

    在Android开发中,实现“类似nice打标签”的功能是一个常见的需求,这通常涉及到用户互动、内容分类和个性化展示。从标题和描述来看,这个压缩包包含的源码可能是一个简单的实现这种功能的例子。我们将深入探讨如何...

    蓝牙cpcl指令打印标签

    蓝牙CPCL指令打印标签是一种在物联网环境中常见的技术应用,尤其在零售、仓储、物流等领域有着广泛的应用。CPCL( Cognitive Peripherals Command Language)是打印机语言的一种,它是一种简单且高效的语言,专门...

    博思得G3000打印标签纸内容空白解决方法!.docx

    ### 博思得G3000打印标签纸内容空白解决方法 #### 一、产品简介 博思得POSTEK G3000是一款小型工业条码打印机,它采用了全面升级的V3.0主板,拥有更大的内存以及更快的打印速度。在同类产品中,博思得G3000以其出色...

    Python-实现OpenCV视频播放器允许用户轻松地从视频生成打标签的图像

    综上所述,"Python-实现OpenCV视频播放器允许用户轻松地从视频生成打标签的图像"项目涵盖了Python编程、OpenCV库的使用、多媒体处理、图像打标签、GUI设计、文件操作等多个方面,对于计算机视觉和机器学习领域的学习...

    Labview 控制斑马打印机打印标签_打印标签_labview打印_labview_操作指南_斑马打印机_

    在本文中,我们将深入探讨如何使用LabVIEW(Laboratory Virtual Instrument Engineering Workbench)来控制斑马打印机进行标签打印。LabVIEW是由美国国家仪器公司(NI)开发的一种图形化编程环境,广泛应用于数据...

    用来打标签的软件,可以连接数据库

    "用来打标签的软件"通常指的是能够帮助用户对数据进行分类、注释和管理的工具,这些工具可以大大提高工作效率,使得数据更容易理解和分析。这类软件的一个重要特性是它们能够连接到数据库,以便直接操作和管理存储在...

    得力批量打印标签html代码

    在批量打印标签的场景下,CSS可以设置字体、颜色、边距、对齐方式等,以确保标签的视觉效果符合预期。可能需要使用到的CSS技术包括盒模型(margin、padding、border)、定位(position、top、right、bottom、left)...

    易语言标签批量打印

    在“易语言标签批量打印”这个项目中,我们主要探讨的是如何使用易语言来实现标签的批量打印功能,以及如何将整数转换为相应的字母表示。 在实际应用中,批量打印标签常常用于商品管理、物流配送等领域,它可以极大...

    Java_斑马打印机打印标签

    在IT行业中,斑马(ZEBRA)打印机是一款广泛应用的工业级条码和标签打印机,尤其在物流、零售、医疗等领域。本项目专注于利用Java语言来实现斑马打印机的标签打印功能,且支持中文字符的打印,这对于需要中文标签的...

    用Javascript打印网页指定标签的内容

    用Javascript打印网页指定标签的内容 用Javascript打印网页指定标签的内容是指在网页上选择指定的标签,然后将其内容导出到另一个页面上,最后进行打印的操作。这种方法可以灵活地控制打印的内容和格式。下面将详细...

Global site tag (gtag.js) - Google Analytics