📘Git Tag 使用与推送技术文档

Git Tag 使用与推送技术文档

适用对象:日常使用 Git/GitHub 的研发工程师 使用场景:版本发布、里程碑标记、回滚定位、团队协作


1. 文档目的

在项目开发与发布过程中,Git Tag(标签) 是标记版本里程碑的核心工具,例如:

  • v1.0.0:正式发布版本
  • v2.1.0-beta:测试版本
  • v1.0.1:紧急修复版本

本技术文档用于统一团队对 Git Tag 的认知、创建方式、推送流程与规范,避免以下常见问题:

  • 本地创建 Tag 后无法推送到 GitHub
  • 正式版本误用轻量标签
  • 标签删除不规范导致远程残留
  • 团队成员标签不同步

2. Git Tag 类型说明(重点)

Git 支持两种标签类型,必须按场景正确选择

2.1 轻量标签(Lightweight Tag)

定义

  • 仅是某个 commit 的别名
  • 不包含作者、时间、备注等信息

特点

  • 创建速度快
  • 结构简单
  • 不可追溯变更背景

适用场景

  • 临时测试版本
  • 内部调试标记
  • 本地个人使用

示例

git tag v1.0.0

2.2 附注标签(Annotated Tag,推荐)

定义

  • Git 官方推荐的标准标签类型
  • 包含完整元数据(作者、时间、备注)

特点

  • 信息完整、可追溯
  • GitHub Releases 页面可直接展示
  • 支持生成发布说明

适用场景(强制)

  • 正式版本发布
  • 对外发布版本
  • 生产环境部署版本

示例

git tag -a v1.0.0 -m "正式发布 v1.0.0,新增登录与支付功能"

规范建议

  • 正式版本 必须使用附注标签
  • 轻量标签仅限本地或临时用途

3. 创建 Git Tag

3.1 给最新 Commit 创建标签

轻量标签

git tag v1.0.0

附注标签(推荐)

git tag -a v1.0.0 -m "发布 v1.0.0:完成核心功能"

3.2 给历史 Commit 补打标签

适用场景

  • 漏打历史版本标签
  • 补充测试/回溯版本

操作步骤

  1. 查看提交记录
git log --oneline
  1. 给指定 commit 打标签
git tag -a v0.9.0 a3f2d4e -m "补打 v0.9.0 测试版本"

4. 推送 Tag 到 GitHub(核心)

⚠️ 重要说明: Git 默认 不会 推送 Tag,必须显式执行推送命令。

4.1 推送单个标签(推荐)

git push origin v1.0.0

适用场景

  • 正式发布
  • 精准控制版本推送

4.2 推送所有本地标签(谨慎)

git push origin --tags

风险说明

  • 会推送所有未同步的标签
  • 可能包含临时或错误标签

建议

  • 使用前确认本地标签干净

5. 查看与同步 Tag

5.1 查看本地标签

git tag          # 仅标签名
git tag -n       # 标签名 + 备注

5.2 查看远程标签

git ls-remote --tags origin

5.3 拉取远程标签(团队协作必备)

git fetch origin --tags
# 或
git pull origin --tags

6. 删除 Tag(高风险操作)

❗ 删除顺序错误会导致远程删除失败

6.1 删除本地标签

git tag -d v1.0.0

6.2 删除远程标签

git push origin --delete v1.0.0

兼容旧写法

git push origin :refs/tags/v1.0.0

7. 常见问题排查

7.1 无权限推送 Tag

原因:未配置 GitHub 权限

解决方案

  • HTTPS:使用 Personal Access Token
  • SSH:确认 SSH Key 已配置
ssh -T git@github.com

7.2 标签已存在(tag already exists)

原因:远程存在同名标签

解决方案

  • 标签正确:直接使用
  • 标签错误:删除后重新创建

7.3 拉取后本地无标签

git fetch origin --tags

8. 版本号命名规范(强烈推荐)

8.1 语义化版本格式

v主版本号.次版本号.修订号

示例

  • v1.0.0
  • v1.2.3
  • v2.0.0-beta

8.2 规则说明

字段 含义
主版本 不兼容变更
次版本 向后兼容的新功能
修订号 Bug 修复

9. 高频命令速查表

# 创建标签
git tag v1.0.0
git tag -a v1.0.0 -m "备注"

# 推送标签
git push origin v1.0.0
git push origin --tags

# 查看标签
git tag
git tag -n
git ls-remote --tags origin

# 同步标签
git fetch origin --tags

# 删除标签
git tag -d v1.0.0
git push origin --delete v1.0.0

10. 总结(团队规范建议)

  • ✅ 正式版本 统一使用附注标签
  • ✅ 推送标签需显式执行 git push origin tag
  • ✅ 删除标签遵循:先本地 → 后远程
  • ✅ 标签命名遵循语义化版本规范

该文档可作为:

  • 团队 Git 规范附件
  • 新人入职必读
  • Release 流程参考文档

维护人:研发效能 / 平台团队