标签
Git 可以给仓库历史中的某个提交打上标签,以示重要。通常人们用这个功能来标记发布节点,比如 v1.0.0、v2.1.3。与分支不同,标签创建后不会随着新提交移动。
列出标签
git tag
# 按模式筛选
git tag -l "v1.8.*"
# 按版本号排序
git tag --sort=-v:refname创建标签
Git 支持两种标签:轻量标签(lightweight) 和 附注标签(annotated)。
附注标签(推荐)
附注标签是存储在 Git 数据库中的完整对象,包含打标签者的名字、邮箱、日期和标签信息,还可以使用 GPG 签名:
git tag -a v1.0.0 -m "发布 1.0.0 正式版"查看标签信息:
git show v1.0.0轻量标签
轻量标签只是某个提交的引用,没有额外信息,适合临时使用:
git tag v1.0.0-temp给历史提交打标签
git tag -a v0.9.0 a1b2c3d -m "补打 0.9.0 标签"推送标签
默认情况下,git push 不会把标签推送到远程,需要显式推送:
# 推送单个标签
git push origin v1.0.0
# 推送所有标签
git push origin --tags
# 推送提交时,同时推送与之关联的附注标签
git push --follow-tags删除标签
# 删除本地标签
git tag -d v1.0.0-temp
# 删除远程标签
git push origin --delete v1.0.0-temp检出标签
如果想查看某个标签对应的代码:
git switch --detach v1.0.0这会进入分离头指针状态。如果需要基于这个版本修复 Bug,最好创建一个分支:
git switch -c fix-1.0 v1.0.0语义化版本
业界普遍采用语义化版本(SemVer)规范来命名版本号,格式为 主版本号.次版本号.修订号:
| 部分 | 何时递增 | 示例 |
|---|---|---|
| 主版本号 MAJOR | 做了不兼容的 API 修改 | 1.4.2 → 2.0.0 |
| 次版本号 MINOR | 做了向下兼容的功能新增 | 1.4.2 → 1.5.0 |
| 修订号 PATCH | 做了向下兼容的问题修正 | 1.4.2 → 1.4.3 |
先行版本可以加上后缀,如 2.0.0-alpha.1、2.0.0-rc.1。
基于标签描述版本
git describe 可以根据最近的标签生成一个可读的版本描述,常用于构建脚本:
git describe --tags
# v1.0.0-5-ga1b2c3d
# 表示在 v1.0.0 之后又有 5 个提交,当前提交是 a1b2c3d