• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >编程技巧 > Git标签管理

Git标签管理

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-12

通过本文主要向大家介绍了git 标签,git 打标签,git 删除标签,git 查看远程标签,git 查看标签等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

前面的话

发布一个版本时,我们通常先在版本库中打一个标签(tag)。这样,就唯一确定了打标签时刻的版本。将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来。所以,标签也是版本库的一个快照,实质上它就是指向某个commit的指针。所以,创建和删除标签都是瞬间完成的。简而言之,标签tag就是一个让人容易记住的有意义的名字,它跟某个commit绑在一起。本文将详细介绍Git标签管理

创建标签

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

然后,敲命令git tag <name>就可以打一个新标签

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

默认标签是打在最新提交的commit上的。有时候,如果忘了打标签怎么办呢?方法是找到历史提交的commit id,然后打上就可以了

比方说要对create b.txt这次提交打标签,它对应的commit id是7ec9296,敲入命令:

再用命令git tag查看标签,注意,标签不是按时间顺序列出,而是按字母排序的

可以用git show <tagname>查看标签信息

附注标签

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

创建一个含附注类型的标签非常简单,用-a(取annotated的首字母,中文意思为注释)指定标签名字即可,而-m选项则指定了对应的标签说明,Git会将此说明一同保存在标签对象中。如果没有给出该选项,Git会启动文本编辑软件供你输入标签说明

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

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

签署标签

如果有自己的私钥,还可以用GPG来签署标签,只需要把之前的-a改为-s(取signed的首字母,中文意思为有符号的)即可

$ git tag -s v0.2 -m 'signed version 0.2 released'

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

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

$ git show v0.2
tag v0.2
Tagger: Michael Liao <askxuefeng@gmail.com>
Date: Mon Aug 26 07:28:33 2013 +0800

signed version 0.2 released
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.12 (Darwin)

iQEcBAABAgAGBQJSGpMhAAoJEPUxHyDAhBpT4QQIAKeHfR3bo...
-----END PGP SIGNATURE-----

commit fec145accd63cdc9ed95a2f557ea0658a2a6537f
Author: Michael Liao <askxuefeng@gmail.com>
Date: Thu Aug 22 10:37:30 2013 +0800

branch test

</div>

用PGP签名的标签是不可伪造的,因为可以验证PGP签名

可以使用git tag -v [tagname] (取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

</div>

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

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'
</div>

操作标签

如果标签打错了,也可以删除

$ git tag -d <tagname>

因为创建的标签都只存储在本地,不会自动推送到远程。所以,打错的标签可以在本地安全删除。

默认情况下,git push并不会把标签传送到远端服务器上,只有通过显式命令才能推送标签到远端仓库

$ git push origin <tagname>

或者,一次性推送全部尚未推送到远程的本地标签

$ git push origin --tags

如果标签已经推送到远程,要删除远程标签就麻烦一点,先从本地删除

然后,从远程删除。删除命令也是push,但是格式如下

最后一个问题,如何查看发送到远程的标签呢?

点击Github项目中的release

即可看到远程标签的信息

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Git标签管理

相关文章

  • 2017-05-12Git里多种撤销操作的最佳方法
  • 2017-05-12zend studio 快捷键收集
  • 2017-05-12到初创公司工作的五个理由
  • 2017-05-12科学知识:同步、异步、阻塞和非阻塞区别
  • 2017-05-12比较经典技术普及帖 以你刚才在淘宝上买了一件东西
  • 2017-05-12回车和换行有什么区别?我们平时按下的Enter键是回车还是换行
  • 2017-05-12编程人员阅读代码的一些小技巧分享
  • 2017-05-12编程爱好者学习心得补充
  • 2017-07-22生成密码算法
  • 2017-05-12比较全的获得ip地理信息的几种方法小结

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 千万要避免的五种程序注释方式小结
    • 程序员开发项目是选择效率还是质量呢?
    • 日历控件和天气使用分享
    • Git基本概述
    • apache commons工具类简介
    • vs快捷键 用好Ctrl+Enter与Ctrl+Shift+Enter组合键让你的编辑代码速度快了很多
    • 微信小程序学习之初探小程序
    • google提供二维码生成器
    • HTML5 移动页面自适应手机屏幕宽度详解
    • Flink运行时之客户端提交作业图-下

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有