git tag详解


前言

通常我们在生产环境发版时,创建一个 tag,这样一个不可修改的版本将被冻结起来,这对于发布或者版本管理非常有益。


1. Git tag的基本概念和用法

1.1. 什么是 Git tag?

Git 中,tag是标记存储库历史记录中特定提交的一种方式。tag通常用于标记项目的特定版本,例如版本 1.02.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

  1. 在您的操作系统上打开终端命令提示符
  2. 输入以下命令以安装 GPG
  • 如果你使用的是 macOS,可以使用 Homebrew 包管理器安装 GPG

    brew install gnupg
    
  • 如果你使用的是 Linux,可以使用你的包管理器安装 GPG。例如,在 Ubuntu 上,可以使用以下命令:

    sudo apt-get install gnupg
    
  • 如果你使用的是 Windows,可以从 Gpg4win 官方网站下载并安装 Gpg4winhttps://gpg4win.org/download.html

  1. 安装完成后,你可以验证 GPG 是否正确安装,可以在终端上运行以下命令:

    gpg --version
    

    如果你正确安装了 GPG,你应该会看到版本号和其他信息。
    在这里插入图片描述

  2. 配置密钥
    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个标签。

### Git Diff 命令详细介绍 #### 工作原理 `git diff` 命令用于展示文件在不同状态下的差异。此命令能够比较工作目录中的当前文件与暂存区快照间的差别,即那些已经修改但尚未暂存的内容[^4]。 #### 主要用途 该工具不仅限于查看单个文件内的变更;它还可以对比分支间、提交记录之间以及任意两个树对象之间的区别。这使得开发者能够在合并前仔细审查即将集成的改动[^1]。 #### 使用方法概述 当不带任何参数执行 `git diff` 时,默认情况下会显示出本地未被加入到索引(index/staging area)里的所有变动详情。 ```bash $ git diff ``` 对于特定文件的差异检查,可以通过指定路径来实现: ```bash $ git diff <file> ``` 如果想要看到已添加至索引但还未完成commit操作的数据变化,则需加上 `--cached` 参数: ```bash $ git diff --cached ``` 为了同时获取上述两种类型的全部信息,可采用如下方式组合两者的结果: ```bash $ git diff HEAD ``` 这里 `HEAD` 表示最近的一次提交版本,因此这条指令实际上是在做三者间的两两配对比较——先是从最新提交到现在的工作副本,再从那里再到已被标记为准备提交的部分[^3]。 #### 高级功能介绍 ##### 显示颜色编码后的输出 为了让阅读更加直观易懂,可以启用彩色模式以区分新增加(`+`) 和删除(-) 的部分: ```bash $ git config --global color.ui true ``` 设置完成后每次运行 `diff` 将自动应用色彩高亮效果[^2]。 ##### 对比历史版本 除了针对当前项目结构的操作外,有时也需要追溯过往的状态变迁情况。这时就可以利用标签(tag), 分支(branch),甚至是具体的哈希值(hash value) 来定位目标位置并进行相应的差分计算: ```bash $ git diff master..feature_branch ``` 上面的例子展示了如何找出主线(master branch) 和特性开发线(feature branch) 中存在的出入之处。 ##### 统计行数统计摘要 假如只关心每份文档里究竟有多少地方发生了更动而不需要逐字细读的话,那么下面这个技巧或许能帮上忙: ```bash $ git diff --stat ``` 这样就能得到一份简洁明了的概览报告,其中包含了受影响文件列表及其对应的增减量数据。 #### 示例代码片段 假设有一个名为 example.py 的 Python 脚本,在对其进行若干编辑之后希望确认具体有哪些地方做了调整,此时便可以直接调用 `git diff` : ```python def old_function(): pass def new_feature(): print("This is a brand-new function!") ``` 经过以上处理后产生的输出可能类似于下述形式 (注意这里的 "+" 号表示新加入的内容, "-" 则意味着移除): ```diff @@ -1,3 +1,7 @@ -def old_function(): - pass - +def old_function(): + """Updated docstring explaining what this does now.""" + +def new_feature(): + print("This is a brand-new function!") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

剑九_六千里

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值