首页/开发/Git 与协作速查/附注标签与签名标签
Git 基础与命令88 条

附注标签与签名标签

-a 创建带说明的标签对象(记录打标签者与日期),-s 使用 GPG 签名;发布标记建议使用附注标签。

Git 与协作速查开发更新于 2026-10-13

附注标签是什么

-a 创建的标签是独立的 Git 对象,内含打标签者、日期与说明文字;-s 在此基础上再用 GPG 私钥签名。轻量标签只是一个指向提交的引用名,没有这些元信息。发布版本用附注标签,才能回答「谁在什么时候发布了什么」这种追溯问题。

基本信息

创建附注标签git tag -a v1.2.0 -m 'release 1.2.0'
创建签名标签git tag -s v1.2.1 -m '说明',需要本机配好 GPG
对象内容tagger 身份、打标签时间、说明信息
查看方式git show v1.2.0;git tag -n5 列出标签与说明前几行
推送方式git push origin <标签名>,标签默认不随分支推送

典型使用场景

  • 发布版本锚点:部署与制品都以标签为依据回溯
  • 需要验证来源的发布:用签名标签确认是发布者本人所为
  • 为里程碑补一段说明,方便日后理解这个版本的意义
  • 脚本读取标签说明自动生成变更日志初稿
  • 区分内部测试标记与正式发布版本

常用示例

常用示例
git tag -a v1.2.0 -m 'release 1.2.0'        # 创建附注标签
git tag -s v1.2.1 -m 'signed release'       # 用 GPG 私钥签名
git show v1.2.0                            # 查看 tagger、日期与说明
git tag -n5                                # 列出标签并显示说明前 5 行
git push origin v1.2.0                     # 只推送这一个标签
git push --follow-tags                     # 推分支时顺带推送附注标签
git verify-tag v1.2.1                      # 校验签名,需先导入对应公钥

三种标签对照

类型是否独立对象元信息适用场景
轻量标签否,只是引用无本地临时标记
附注标签是tagger、日期、说明发布版本
签名标签是以上加 GPG 签名需要验证来源的发布
git describe 默认只识别附注标签,全用轻量标签的仓库拿不到「标签-距离-短哈希」形式;统一使用附注标签能让版本描述稳定可读。
附注标签与轻量标签可以混用,但同名标签不会共存;建议发布版本统一用附注标签,本地试验用轻量标签并在合并前清理,避免评审时把试验标记误认成正式版本。
标签说明支持多行:-m 可以重复出现,直接执行 git tag -a 不带 -m 会打开编辑器。写清本版本包含哪些变更与升级注意事项,比只写版本号对后来者更有帮助。

易错点

  • 修改已发布标签要本地 -f 重建再强推远端,其他人的本地缓存不会自动更新,容易长期并存两个同名标签
  • 标签默认不随 git push 推送,发布流水线常因此找不到版本号,需要显式推送或用 --follow-tags
  • 签名标签依赖 GPG 环境(私钥、gpg-agent、公钥导入),流水线里没配好会直接失败
  • 校验签名前必须导入发布者公钥,否则 verify-tag 只会报无法验证,不能据此判断标签可疑

数据来源与参考

  • Git 官方文档:git-tag(-a/-s)
  • Pro Git 2nd Edition · 2.6 附注标签
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌