git tag 是什么
git tag 给某个提交打上一个固定名字,用来标记发布点与里程碑。标签指向提交本身,不随分支移动,所以是回溯发布的稳定锚点:不管分支后来怎么走,某个版本号永远指向同一次提交。它有两种形式:轻量标签只存名字,附注标签还会带上说明信息与签名。
为什么要显式推送标签
标签默认不会随普通推送一起上传,需要显式指定。这既是保护也是麻烦:好处是本地临时打的标记不会误传到远端,代价是忘记推送会让发布流水线找不到对应标签。流水线常以标签触发发布,因此打标签与推送标签通常是一个连续动作。
基本信息
| 适用平台 | Linux / macOS / Windows(Git 2.x) |
|---|---|
| 语法 | git tag [选项] [<名字>] [<提交>] |
| 轻量标签 | 只记录名字,适合临时标记 |
| 附注标签 | -a 创建,-m 写说明,可配合签名 |
| 推送方式 | 默认不推,需要 git push origin <标签> 或 --tags |
| 删除方式 | 本地用 -d,远端用 push --delete |
典型使用场景
- 标记发布:给每个上线版本打一个可回溯的标签
- 触发流水线:以标签推送作为发布流程的起点
- 归档里程碑:标记重要阶段,便于以后比对差异
- 版本比较:用两个标签之间的差异整理变更清单
- 热修复起点:以线上标签为起点开分支,保证基线精确
常用示例
常用示例
git tag # 列出全部标签
git tag v1.4.0 # 轻量标签,指向当前提交
git tag -a v1.4.0 -m '发布 1.4.0' # 附注标签,带说明
git tag -l 'v1.*' # 按模式筛选
git push origin v1.4.0 # 推送单个标签
git push origin --tags # 推送全部本地标签
git tag -d v1.4.0 # 删除本地标签
git push origin --delete v1.4.0 # 删除远端标签轻量标签与附注标签
| 对比项 | 轻量标签 | 附注标签 |
|---|---|---|
| 创建方式 | git tag 加名字 | 需要 -a 并通常配 -m |
| 存储内容 | 只有一个引用 | 独立对象,含说明与作者 |
| 是否可以签名 | 否 | 可以配合签名使用 |
| 适用场景 | 临时标记 | 正式发布 |
标签指向提交、不随分支移动,是发布回溯的稳定锚点;流水线也常以标签推送来触发发布流程。
只删本地标签,远端仍然存在,团队成员依旧可以拉到。删除标签要把本地与远端两边都做掉。