git tag(标签)的用法指南
1. Git Tag 核心概念
Git 中的 tag(标签)是对**某一个提交节点(commit)**的静态标记,核心作用是标记版本节点(如 v1.0、v2.0),区别于分支(branch)的动态迭代,标签一旦创建(普通标签)固定绑定某次提交,不会随代码更新变动。
标签主要分为两类:
-
轻量标签(Lightweight Tag):仅保存 commit 哈希值,无额外说明、无作者信息,仅用于临时标记,极简轻量。
-
附注标签(Annotated Tag):完整标签对象,包含版本说明、作者、时间、校验信息,支持签名,正式版本发布必须使用此类标签。
版本标签通用规范:通常以 v主版本.次版本.修订号 命名,例如 v1.0.0、v2.1.3。
2. 查看标签(基础操作)
2.1. 查看所有本地标签
git tag
作用:列出当前仓库所有本地标签,无分页,标签按字母顺序排序。
2.2. 模糊筛选标签
git tag -l "v1.*"
作用:模糊匹配指定规则的标签,示例可筛选出所有 v1 系列版本(v1.0、v1.1、v1.2 等)。支持通配符 *,精准过滤所需版本。
2.3. 查看标签详细信息
git show v1.0.0
作用:查看标签对应的提交详情、代码变动、标签备注、作者、时间。附注标签会展示完整信息,轻量标签仅展示对应 commit 信息。
3. 创建标签(核心常用)
3.1. 创建轻量标签
git tag v1.0.0
默认给**最新一次提交(HEAD)**打轻量标签,无任何备注信息,仅绑定当前 commit。
3.2. 创建附注标签(推荐正式环境使用)
git tag -a v1.0.0 -m "正式版本v1.0.0 初始发布"
参数说明:
-
-a:全称 annotated,指定创建附注标签 -
-m:指定标签备注信息,说明版本更新内容、发布目的
优势:可追溯版本说明、作者信息,适合生产环境版本归档。
3.3. 给历史提交打标签
很多场景需要对过往某次提交标记版本,无需重置代码,直接通过 commit 哈希值创建标签。
# 格式:git tag -a 标签名 提交哈希 -m "备注"
git tag -a v0.9.0 5f2d368 -m "历史测试版本v0.9.0"
使用 git log 可查看所有历史提交的哈希值,复制对应哈希即可精准打标。
4. 推送标签到远程仓库
默认情况下,git push 不会推送标签,本地标签创建后需手动推送到远程,否则仅本地可见。
4.1. 推送单个标签
git push origin v1.0.0
4.2. 推送所有本地标签
git push origin --tags
作用:一次性推送所有本地未同步的标签到远程,适合批量发布版本。
注意:该命令仅推送标签,不推送代码分支变动。
5. 删除标签(本地+远程
标签命名错误、版本废弃时,需分别删除本地和远程标签,两步操作缺一不可。
5.1. 删除本地标签
git tag -d v1.0.0
-d:delete 缩写,删除本地指定标签
5.2. 删除远程标签
# 标准写法
git push origin :refs/tags/v1.0.0
# 简洁写法(Git 1.7.0+ 支持)
git push origin -d tag v1.0.0
注意:必须先删本地、再删远程,避免远程标签重新拉回本地。
6. 拉取远程标签
多人协作时,需要同步其他开发者推送的远程标签。
6.1. 拉取所有远程标签
git fetch origin --tags
作用:仅同步远程标签到本地,不修改本地代码、不合并分支,安全无副作用。
6.2. 拉取代码同时同步标签
git pull --tags
7. 切换到标签版本
需要回滚、查看历史版本代码时,可直接切换到指定标签对应的代码快照。
git checkout v1.0.0
切换后会进入游离 HEAD 状态,此时仅可查看代码,修改代码不会影响任何分支。若需基于该版本迭代,需新建分支:
git checkout -b hotfix-v1.0.0
8. 标签重命名实操
标签命名错误无法直接修改,需「新建正确标签 → 删除旧标签」完成重命名:
-
基于旧标签对应的 commit,创建新标签
-
删除本地旧标签
-
推送新标签、删除远程旧标签
# 1. 基于旧标签v1.0创建新标签v1.0.0
git tag -a v1.0.0 v1.0 -m "修正版本命名"
# 2. 删除本地旧标签
git tag -d v1.0
# 3. 推送新标签到远程
git push origin v1.0.0
# 4. 删除远程旧标签
git push origin -d tag v1.0
9. 核心使用规范与避坑点
-
正式版本只用附注标签:轻量标签无版本备注,无法追溯发布信息,禁止用于生产版本。
-
标签不可重复使用:同一仓库不允许重复标签名,版本迭代需递增版本号。
-
标签只读不修改:标签是静态快照,创建后不建议修改,版本更新直接新建标签。
-
推送标签必同步远程:本地标签不推送,团队其他成员无法查看版本标记。
-
禁止删除已发布正式标签:已上线、归档的版本标签严禁删除,避免版本追溯断裂。
10. 常用命令速查表
| 命令 | 作用 |
|---|---|
| git tag | 查看所有本地标签 |
| git tag -l "v1.*" | 筛选指定规则标签 |
| git tag -a v1.0 -m "备注" | 创建附注标签(推荐) |
| git tag v1.0 | 创建轻量标签 |
| git show v1.0 | 查看标签详细信息 |
| git push origin v1.0 | 推送单个标签到远程 |
| git push origin --tags | 推送所有本地标签 |
| git tag -d v1.0 | 删除本地标签 |
| git push origin -d tag v1.0 | 删除远程标签 |
| git fetch origin --tags | 同步远程标签到本地 |
| git checkout v1.0 | 切换到指定标签版本 |