Git 标签Git 中标记发布的教程
标签是 Git 的一个基本功能,它允许您识别代码的特定发布版本。您可以将标签视为一个不会更改的分支。一旦创建,它就失去了更改提交历史记录的能力。
两种类型的 Git 标签
Git 中有两种类型的标签:带注释的标签和轻量级标签。它们都允许您引用存储库中的特定提交,但它们可以存储的元数据量有所不同。
带注释的标签
带注释的标签会将额外的元数据(例如作者姓名、发行说明、标签消息和日期)以完整对象的形式存储在 Git 数据库中。所有这些数据对于项目的公开发布都至关重要。
标签还可以包含更具描述性的标记消息或注释,就像合并时的提交消息一样。通常,这是通过使用(-a
用于注释)来实现的:
$ git tag -a v1.0.0
执行此命令后,您将创建一个新的带注释的标签,其版本号为 v1.0.0。该命令随后会打开您的提交编辑器,以便您填写元数据。
如果您想添加标签消息,您可以传递-m
选项,这是一种类似于的方法git commit -m
。
$ git tag -a v1.0.0 -m "Releasing version v1.0.0"
轻量级标签
轻量级标签是向 Git 仓库添加标签最简单的方法,因为它们只存储所引用提交的哈希值。创建轻量级标签时无需使用 -a、-s 或 -m 选项,并且不包含任何额外信息。
轻量级标签本质上是提交的“书签”,它们只是一个提交的名称和指向提交的指针,可用于创建指向相关提交的快速链接。来自 Bitbucket 教程
要创建新的轻量级标签,请执行以下命令:
$ git tag v1.0.0
附加命令
列出标签-git tag
每当您想要列出所有现有标签时,请使用 命令,或者您可以使用 过滤列表git tag -l 'v1.1.*'
,其中*
充当通配符。它将返回标有 的标签列表v1.1
。
您会注意到,当您调用时,git tag
您看不到注释的内容。要预览它们,您必须-n
在命令中添加:git tag -n3
。
$ git tag -l -n3
v1.0 Release version 1.0
v1.1 Release version 1.1
v1.2 Release version 1.2
该命令列出所有现有标签,标签信息最多包含 3 行。默认情况下,-n
仅显示第一行。
标签详细信息-git show <tag_identifier>
此命令向您显示标签详细信息和已标记的提交的信息。
$ git show v1.0
tag v1.0
Tagger: Kolosek
Date: Fri May 11 10:45:33 2018 +0100
Release version 1.0
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1
iMTvhAA...
-----END PGP SIGNATURE-----
commit 7d44b6bb8abb96dee33f32610f56441496d77e8a
Author: Kolosek
Date: Fri May 11 9:50:13 2018 +0100
Edited the Login form
...
它会打印作者姓名、创建日期、信息、GnuPG 签名(如果有)以及引用提交的信息。如果标签是轻量级的,则输出将仅限于引用提交的信息。
编辑标签-git tag -a -f <tag_identifier> <commit_id>
如果您尝试创建与现有标签具有相同标识符的标签,Git 将抛出错误:fatal: tag 'v1.0' already exists
。
您无需删除标签并重新添加,只需在保留现有描述的情况下替换它即可。在提交历史记录中选择<commit_id>
要将标签移动到的位置,然后将-f
或添加-force
到命令中。
当您“强制”进行此类更改时,请务必提醒您的团队成员。如果他们仍然持有该标签的“旧”版本,则在尝试推送到服务器时可能会引发冲突!
如果您已经将标签推送到服务器并想要修复该问题,请首先确保您的本地标签版本正确,然后再运行以下命令:git push origin -f --tags
。
删除标签-git tag -d <tag_identifier>
通常,没有理由删除标签,因为它们价格低廉并且不使用任何资源,除非您错误地创建了指向错误提交的标签。
如果标签已被推送,则需要将其从远程存储库中删除,请运行:$ git push origin :v1.0
。
发布标签-git push <location> <tag_identifier>
标签只是对本地仓库的引用,它不会自动与其余代码一起推送到远程仓库git push
。您可以单独发布标签,也可以运行git push --tags
以下命令一次性推送所有标签。操作方法与推送分支类似:
$ git push origin v1.0
标签排序-git tag --sort=<type>
当查看包含大量标签的项目时,使用排序选项会非常方便。支持的类型包括:
refname
(按字典顺序排序),version:refname
或v:refname
(此处标签名称被视为版本)。
git tag -l --sort=-version:refname "v*"
这里我列出了所有以“v”开头的标签及其版本。
git tag和社交媒体里的#tag不是一样吗?不过它有自己的用法。它可以帮你返回并列出所有之前的发布版本!
在您访问期间,请注意,Kolosek 始终乐意为您提供帮助,将您的想法变为现实。如果您需要帮助,可以随时通过社交媒体联系 Kolosek。或许可以用 Twitter?
本文最初发表于Kolosek Blog。
文章来源:https://dev.to/neshaz/a-tutorial-for-tagging-releases-in-git-147e