Skip to content

git tag 命令语法

git tag 命令在 Git 版本控制系统中用于创建、列出、删除或验证一个标签对象。标签通常用于标记发布点(如 v1.0、v2.0 等)。在 Git 中,有两种类型的标签:轻量标签和带注释的标签。

基本语法

git tag [-a | -s | -d] <tagname> [<commit>]
  • -a <tagname>: 创建一个带注释的标签。
  • -s <tagname>: 创建一个用私钥签名的标签,用于 GPG 签名验证。
  • -d <tagname>: 删除一个标签。
  • <tagname>: 指定标签的名称。
  • [<commit>]: 可选参数,指定要标记的提交。如果省略,默认为当前 HEAD。

常用选项

  1. -a <tagname> -m <msg>: 创建一个带注释的标签,使用 -m 选项提供标签消息。
  2. -s <tagname> -m <msg>: 创建一个经过 GPG 签名的带注释的标签。
  3. -d <tagname>: 删除指定的标签。
  4. -l--list: 列出所有标签。
  5. -v <tagname>: 验证带有 GPG 签名的标签。

示例

  • 创建一个轻量标签:
    git tag v1.0
  • 创建一个带注释的标签:
    git tag -a v1.1 -m "Release version 1.1"
  • 在特定提交上创建标签:
    git tag -a v1.2 <commit-hash> -m "Release version 1.2"
  • 列出所有标签:
    git tag
  • 删除一个标签:
    git tag -d v1.0

使用 git tag 可以帮助你管理项目的重要点,如版本发布。带注释的标签包含更多的信息,如创建者、日期和信息字段,而轻量标签更像是一个特定提交的引用。选择哪种类型取决于你的具体需求。

删除本地和远程的 tag

要删除 Git 中的本地和远程 tag v1.0.16,你可以按照以下步骤操作:

1. 删除本地的 tag v1.0.16

首先,使用 git tag -d 命令来删除本地的 tag:

bash
git tag -d v1.0.16

2. 删除远程的 tag v1.0.16

删除本地 tag 后,你还需要删除远程仓库中的 tag。首先,使用 git push 命令来删除远程的 tag:

bash
git push origin --delete tag v1.0.16

3. 清理远程引用(可选)

如果你的远程仓库已经删除了 tag,但本地仓库仍然保存了远程引用,你可以使用 git fetch --prune --tags 来清理远程的 tag 引用:

bash
git fetch --prune --tags

hotfix

问题

当前线上运行的代码版本为 v1.1.1,我在主分支(master/main)上已经进行了一些新功能的开发,这些改动尚未上线。现在线上版本(v1.1.1)出现了一个紧急 bug,需要尽快修复并上线。请问我该如何在 Git 中基于已打好的 v1.1.1 标签(tag)新建一个独立的分支来修复该 bug,从而在不影响主分支未上线改动的前提下完成热修复?

方案

如果当前线上版本是 v1.1.1,对应的代码版本被打上了这个 tag,那么可以基于该 tag 创建一个新分支用于修复线上 bug,而不影响你在主线 (master/main 分支) 上未上线的改动。基本步骤如下:

  1. 确保本地代码库已包含 v1.1.1 的 tag 信息(如果没有,请先从远程获取最新的 tag):

    bash
    git fetch --tags
  2. 基于 v1.1.1 这个 tag 创建一个新的分支(例如命名为 hotfix/v1.1.2):

    bash
    git checkout -b hotfix/v1.1.2 v1.1.1

    这里 hotfix/v1.1.2 是一个示例分支名,你可以根据团队的命名规范来调整。

  3. 在新建的分支上进行 bug 修复的代码改动,然后正常执行提交操作:

    bash
    # 修改代码后
    git add .
    git commit -m "Fix bug for v1.1.1"
  4. 将修复分支推送到远程仓库(如果需要与团队协作):

    bash
    git push origin hotfix/v1.1.2
  5. 修复完成并通过测试后,可以选择在这个分支上重新打一个 tag(例如 v1.1.2),然后将该分支合并回主线或者直接上线使用。

    例如打新 tag:

    bash
    git tag v1.1.2
    git push origin v1.1.2

通过上述操作,你就能在不影响当前主线未上线改动的同时,从已上线版本(对应的 tag)创建出独立的修复分支,完成 bug 修复后可以直接发布新的修订版本。