git基础-tagging

tagging

与大多数版本控制系统一样,Git具有将存储库历史中的特定点标记为重要tag的能力。通常,人们使用此功能来标记发布点(例如v1.0,v2.0等)。在本节中,将学习如何列出现有的标签,如何创建和删除标签,以及不同类型的标签是什么。

显示tag列表

该命令按字母顺序列出标签;它们显示的顺序没有真正的重要性。

还可以搜索与特定模式匹配的标签。例如

PS:

列出标签通配符需要使用 -l 或 --list 选项。

如果只想要整个标签列表,运行 git tag 命令会隐式地假设我们想要一个列表,并提供一个在这种情况下,使用 -l 或 --list 是可选的。

然而,如果提供了一个通配符模式来匹配标签名称,那么使用 -l 或 --list 是强制的。

创建标签

Git支持两种类型的标签:轻量级标签和附注标签。

轻量级标签非常类似于不会改变的分支------它只是指向特定提交的指针。

然而,附注标签存储为Git数据库中的完整对象, 他们是经过校验的,包含标签者的姓名、电子邮件和日期,有一个标签消息,并且可以使用GNU隐私保护(GPG)进行签名和验证。通常建议创建附注标签,以便可以获取所有这些信息

但如果需要一个临时标签或出于某种原因不想保留其他信息,轻量级标签也是可用的。

辅助标签

在Git中创建一个附注标签很简单。最简单的方法是在运行tag命令时指定 -a。

-m 参数指定了一个与标签一起存储的标签消息。如果没有为附注标签指定消息,Git会启动编辑器,以便输入消息。

可以使用 git show 命令查看标签数据以及被标记的提交。

这会显示标签者信息、标签日期以及注释信息,然后再显示提交信息。

轻量级标签

另一种打标签的方法是使用轻量级标签。这基本上就是将校验和存储在文件中 - 没有保留其他信息。要创建轻量级标签,不要提供任何 -a、-s 或 -m 选项,只需提供一个标签名称。

这一次,如果在标签上运行 git show 命令,将看不到额外的标签信息。该命令只会显示提交信息。类似如下的信息:

$ git show v1.4-lw

commit ca82a6dff817ec66f44342007202690a93763949

Author: Scott Chacon <schacon@gee-mail.com>

Date: Mon Mar 17 21:52:11 2008 -0700

Change version number

后期打签

可以针对某一commit id打签,我简单测试用仓库的提交历史如下:

可以针对commit id 7db1252补打标签,如下

推送标签到远程服务器

默认情况下,git push 命令不会将标签传输到远程服务器。在创建标签后,需要显式地将标签推送到共享服务器。这个过程就像更新远程分支一样 - 可以运行 git push origin <tagname>。

如果有很多标签需要一次性推送到远程,也可以使用 git push 命令的 --tags 选项。这将传输所有尚未存在于远程服务器上的标签。

删除标签

要在本地仓库中删除一个标签,可以使用 git tag -d <tagname> 命令。例如

请注意,这不会从任何远程服务器中删除标签。删除远程服务器上的标签有两种常见的变体。

第一种变体是 git push <remote> :refs/tags/<tagname>。

解释上述命令的方式是将冒号前的空值推送到远程标签名称,从而有效地删除它。

第二种(更直观的)删除远程标签的方法是使用

$ git push origin --delete <tagname>

检出标签

如果想查看标签对应的那个软件版本,可以通过 git checkout 来检出该标签,请留意这会将仓库置于 "detached HEAD" 状态,这会带来一些不良的副作用。

在 "detached HEAD" 状态下,如果进行更改然后创建一个提交,标签将保持不变,但新的提交将不属于任何分支,并且无法送达(除了通过确切的commit 哈希)。因此,如果需要进行更改,比如说要修复一个旧版本的 bug,通常会想要创建一个分支。

如果这样做并进行了提交,v2.0 分支将会与v2.0 标签略有不同,因为它将随着新更改向前移动,所以务必小心。

相关推荐
但老师9 分钟前
Git遇到“fatal: bad object refs/heads/master - 副本”问题的解决办法
git
秃头女孩y11 分钟前
git创建分支
git
研究是为了理解5 小时前
Git Bash 常用命令
git·elasticsearch·bash
DKPT6 小时前
Git 的基本概念和使用方式
git
Winston Wood9 小时前
一文了解git TAG
git·版本控制
喵喵先森9 小时前
Git 的基本概念和使用方式
git·源代码管理
xianwu54311 小时前
反向代理模块
linux·开发语言·网络·git
binishuaio13 小时前
Java 第11天 (git版本控制器基础用法)
java·开发语言·git
会发光的猪。14 小时前
如何在vscode中安装git详细新手教程
前端·ide·git·vscode
stewie615 小时前
在IDEA中使用Git
java·git