文章目录
- 前言
- 1. Git tag的基本概念和用法
- 1.1. 什么是 Git tag?
- 1.2. Git 标签有什么作用?
 
- 2. 创建 Git tag
- 2.1. 创建轻量级tag
- 2.2. 创建带有注释的tag
- 2.3. 编辑已有的tag
 
- 3. 列出和检出 Git tag
- 3.1. 列出所有tag
- 3.3. 列出匹配的tag
- 3.4. 检出tag
 
- 4. 将 Git tag推送到远程存储库
- 4.1. 推送单个tag
- 4.2. 推送所有tag
- 4.3. 删除远程tag
 
- 5. Git tag高级用法
- 5.1. 签名tag
- 5.2. tag过滤
- 5.3. 访问tag历史记录
 
前言
通常我们在生产环境发版时,创建一个 tag,这样一个不可修改的版本将被冻结起来,这对于发布或者版本管理非常有益。
1. Git tag的基本概念和用法
1.1. 什么是 Git tag?
在 Git 中,tag是标记存储库历史记录中特定提交的一种方式。tag通常用于标记项目的特定版本,例如版本 1.0 或 2.0。
1.2. Git 标签有什么作用?
tag可以用于指定在仓库历史记录的某个特定点上创建的版本,这在软件开发中非常有用。如果需要在软件发布时创建tag,开发人员就可以跟踪哪个版本用于真实世界中的生产环境。在软件开发中,tag还可以用于标记里程碑或特定功能的实现。
除此之外,tag还可以用于将存储库中的提交与版本控制系统中的标记相关联。这可以用于确保特定版本的软件与存储库中的特定提交相关联。在软件开发中,这可以用于确保特定版本的软件与单独的存储库分支相关联。
2. 创建 Git tag
可以使用消息创建带注释的 tag,也可以创建不带消息的轻量级 tag。带注释的 tag 包括 tag 的名称、电子邮件和日期等信息,而轻量级 tag 仅是对特定提交的指针。
2.1. 创建轻量级tag
运行 git tag [tagname] 命令,后跟标签的名称。例如,git tag v2.0 将创建一个名为 “v2.0” 的轻量级标签。

2.2. 创建带有注释的tag
运行 git tag -a [tagname] 命令,后跟引号中的消息。例如,git tag -a v1.0 -m "Initial release" 将创建一个名为 “v1.0” 并带有 “Initial release” 消息注释的标签。
运行 git show [tagname] 命令,可以查看标签的详细信息,包含注释、作者、邮箱、创建日期等信息
 
2.3. 编辑已有的tag
运行 git tag -f [tagname] 命令,后跟新的提交哈希或分支名称。例如,git tag -f v1.0 [new-commit-hash] 将把“v1.0”标签移动到新提交。或者,git tag -f v1.0 [new-branch-name] 将标签移动到新分支的末尾。

3. 列出和检出 Git tag
3.1. 列出所有tag
运行 git tag 命令。例如,git tag 将列出所有本地标签。如果要查看远程存储库中的标签,可以使用 git ls-remote --tags [remote] 命令。例如,git ls-remote --tags origin 将列出名为 origin 的远程存储库中的所有标签。
 
3.3. 列出匹配的tag
运行 git tag -l [pattern] 命令。例如,git tag -l v1.* 将列出所有以 “v1.” 开头的标签。

3.4. 检出tag
要检出 Git 标签,可以使用 git checkout [tagname] 命令。例如,要检出名为 “v1.0” 的标签,请运行 git checkout v1.0 命令。
检出标签将使存储库进入 “游离 HEAD” 状态,这意味着所做的任何更改都不会与分支相关联。如果要在标签上进行更改,可以创建一个新的分支来进行更改,以避免对标签进行更改并破坏历史记录。
4. 将 Git tag推送到远程存储库
4.1. 推送单个tag
运行 git push origin [tagname]。例如,要将标签“v1.0”推送到远程仓库,请使用命令 git push origin v1.0。

 运行 git ls-remote 查看远程标签。可以看到v1.0已经成功推送到远程仓库。
 
4.2. 推送所有tag
运行 git push --tags。这将推送所有尚未在远程仓库上的本地标签。
 
 此时我们可以在仓库看到本地的tag已经被推送过来了。
 
4.3. 删除远程tag
要删除远程 Git 标签,需要使用 git push 命令,后跟 --delete 选项和标签名称。例如,要删除名为 v1.0 的标签,可以运行以下命令:git push --delete origin v1.0。这将从远程存储库中删除标签。
 
请注意,如果您删除了远程标签,那么需要确保本地存储库中也删除了它。您可以使用 git tag -d [tagname] 命令来删除本地标签。例如,要删除名为 v1.0 的标签,可以运行以下命令:git tag -d v1.0。
 
5. Git tag高级用法
5.1. 签名tag
要为 Git 标签签名,可以使用 git tag -s [tagname] 命令,并使用你的 GPG 密钥对标签进行签名。例如,git tag -s v1.0 将使用您的 GPG 密钥对名为 “v1.0” 的标签进行签名。
 
 如果报错No secret key,解决方法:在Git Bash终端配置gpg程序位置
 
编辑完成后:wq保存退出即可。

要验证签名的 Git 标签,请使用 git tag -v [tagname] 命令。例如,git tag -v v1.0 将验证名为 “v1.0” 的标签的签名,并显示签名者和提交 ID 等信息。如果您想验证未标记的提交,可以使用提交哈希代替标记名称,例如,您可以运行git verify-commit [commit-hash]直接验证提交,而不是运行git tag -v [tagname]。
 
签名标签可以帮助确保标签的完整性和来源,因此它们特别适用于需要进行身份验证或需要进行安全审计的软件项目。
注意:如果报错了,请确保已经安装GPG,并且密钥已正确配置。
请按照以下步骤安装并配置 GPG:
- 在您的操作系统上打开终端或命令提示符。
- 输入以下命令以安装 GPG:
-  如果你使用的是 macOS,可以使用Homebrew包管理器安装GPG:brew install gnupg
-  如果你使用的是 Linux,可以使用你的包管理器安装GPG。例如,在Ubuntu上,可以使用以下命令:sudo apt-get install gnupg
-  如果你使用的是 Windows,可以从Gpg4win官方网站下载并安装Gpg4win:https://gpg4win.org/download.html
-  安装完成后,你可以验证 GPG 是否正确安装,可以在终端上运行以下命令: gpg --version如果你正确安装了 GPG,你应该会看到版本号和其他信息。 
  
-  配置密钥 
 1.使用gpg --gen-key命令生成一个新的GPG密钥。这会打开一个提示,您可以在其中输入有关密钥的信息,例如您的姓名和电子邮件地址。
 2.生成密钥后,您可以使用gpg --list-keys命令列出您的密钥。这将显示您密钥的指纹,您稍后需要使用它。
 3.使用gpg --export --armor [你的钥匙指纹]命令导出您的GPG公钥。这将以ASCII装甲格式输出您的公钥,您可以将其复制并粘贴到Git托管服务中。 ok,配置成功 
  4.通过运行以下命令配置Git使用您的GPG密钥: git config --global user.signingkey [你的钥匙指纹] git config --global commit.gpgsign true运行 git config --list查看user.signingkey是否配置成功。 这些命令将告诉Git使用您的GPG密钥来签署您的提交。 
5.2. tag过滤
要过滤 git 标签,请使用 git tag 命令的 --list 选项,后跟一个模式。例如,要列出以“v1.”开头的所有标记,请运行以下命令:
git tag --list 'v1.*'
这将列出所有以“v1.”开头的标记,例如“v1.0”、“v1.1”等。
你还可以使用 --contains 选项来列出包含指定提交的标记。例如,要列出包含提交 abc123 的所有标记,请运行以下命令:
git tag --contains abc123
这将列出所有包含提交 abc123 的标记。
5.3. 访问tag历史记录
要访问Git标签的历史记录,您可以使用git tag命令,带有--list选项和--sort选项,后跟version:refname以按版本号对标签进行排序。例如,要按时间顺序列出标签,您可以运行以下命令:
git tag --list --sort=-v:refname
这将以相反的时间顺序列出所有标签,并将最新的标签列在第一位。

您还可以通过添加--max-count选项,后跟要显示的标签数,来限制列出的标签数。例如,要列出最近的10个标签,可以运行以下命令:
git tag --list --sort=-v:refname --max-count=10
这将以相反的时间顺序列出最近的10个标签。



















