【Git Tag + GPG 签名笔记】
Git Tag + GPG 签名
一、Git Tag 速查
| 功能 | 关键命令 | 说明 |
|---|---|---|
| 列出标签 | git tag / git tag -l "v1.*" |
支持模糊匹配 |
| 轻量标签 | git tag v0.1.0 |
仅保存 commit ID |
| 附注标签 | git tag -a v1.0.0 -m "Release" |
含作者 / 时间 / 说明 |
| GPG 签名标签 | git tag -s v1.0.0 -m "Signed" |
需先配置 GPG |
| 推送标签 | git push origin v1.0.0 或 git push --tags |
默认本地标签不会自动推送 |
| 删除标签 | 本地 git tag -d v1.0.0 ;远程 git push --delete origin v1.0.0 |
|
| 基于标签创建分支 | git switch -c hotfix/v1.0.0 v1.0.0 |
继续维护旧版本 |
对比:Tag 永远指向同一提交(只读),分支会随新提交移动。
二、GPG 概念与用途
| 项目 | 内容 |
|---|---|
| 全称 | GNU Privacy Guard |
| 核心功能 | 文件/邮件加密、数字签名、完整性校验 |
| 关键机制 | 公钥 + 私钥(非对称加密) |
| 常见场景 | Git 提交/标签签名、软件发行包 .asc 校验、邮件加密 |
1. 安装与生成密钥
# macOS
brew install gnupg
# Ubuntu
sudo apt install gnupg2
# 生成 4096 位 RSA 密钥
gpg --full-generate-key
查看指纹并告诉 Git 使用:
gpg --list-secret-keys --keyid-format=long
git config --global user.signingkey <KeyID>
git config --global commit.gpgsign true # 默认给 commit 加签
2. Git 中的签名操作
# 签名提交
git commit -S -m "feat: add x"
# 签名标签
git tag -s v1.2.0 -m "Signed release v1.2.0"
git push origin v1.2.0
他人验证:
gpg --recv-keys <KeyID> # 或导入你分享的 my_pubkey.asc
git tag -v v1.2.0 # 校验标签签名
三、实践建议
- 正式发布:使用 附注 + GPG 签名 标签,命名遵循
v<主>.<次>.<补丁>。 - CI/CD:在流水线里打标签 ➜ 构建 ➜ 发布 ➜ 生成
.asc签名文件,供用户校验。 - 密钥安全:私钥离线或存 Yubikey;生成撤销证书备份。
- 不可随意改动已公开标签:若必须移动,务必删除重建并强推,同时公告。
一句话:Tag = 里程碑;GPG = 身份 + 完整性。二者结合,让版本发布既可追溯又可信。

浙公网安备 33010602011771号