如何在 GitHub 仓库中创建标签(Tag)
创建标签两种方式:命令行 git tag -a v1.0.0 -m "说明" 后 git push origin refs/tags/v1.0.0(推荐附注标签);或在 GitHub 网页 Releases → Draft a new release 中创建标签并发布。轻量标签只是指针,附注标签含说明等元数据,签名需另行启用。
两种方式:① 命令行 git tag -a v1.0.0 -m "release v1.0.0" 创建附注标签,再 git push origin refs/tags/v1.0.0 推送;② GitHub 网页端 Releases → Draft a new release → Choose a tag 输入新标签名发布,GitHub 会自动建标签。正式发布建议用附注标签(带说明、作者、日期,可 GPG 签名)。
命令行方式
git fetch origin main # 更新远端 main
git log -1 --oneline origin/main # 核对准备打标的提交
git tag -a v1.0.0 origin/main -m "v1.0.0:首个稳定版本" # 附注标签(推荐)
# 或轻量标签(仅指针,无元数据)
# git tag v1.0.0 origin/main # 与上一条二选一,不要重复创建同名标签
git push origin refs/tags/v1.0.0 # 推送单个标签
# git push origin --tags # 仅确认要发布全部本地标签时使用
给历史提交补标签:git tag -a v0.9.0 <commit哈希> -m "补标"。
网页方式
仓库首页 → 右侧 Releases → Draft a new release → Choose a tag 输入 v1.0.0(选 "Create new tag on publish")→ 填标题和发布说明 → Publish release。标签和 Release 一次完成。
标签管理
git tag # 列出所有标签
git show v1.0.0 # 查看标签详情
git tag -d v1.0.0 # 删本地标签
git push origin --delete refs/tags/v1.0.0 # 删远程标签
常见问题(FAQ)
Q:轻量标签和附注标签选哪个?
正式发版用附注标签(-a):它记录了打标人、时间、说明,可用 -s 显式签名;-a 本身不请求签名,但 tag.gpgSign 等配置仍可能启用签名。GitHub Release 也可基于轻量标签,正式发版通常优先附注标签以保留元数据。
Q:标签名有什么规范?
业界通行语义化版本:v主.次.修订(如 v1.2.3)。预发布加后缀:v2.0.0-rc.1。保持与 CHANGELOG 一致。
Q:推错标签怎么撤回?
先删远程 git push origin --delete refs/tags/v1.0.0,再删本地 git tag -d v1.0.0。删除标签不等于删除对应 Release;受保护或不可变的标签/Release 可能拒绝删除。若已有人基于该 tag 构建发布,改发新标签而不是覆盖。