【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.0git 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                # 校验标签签名

三、实践建议

  1. 正式发布:使用 附注 + GPG 签名 标签,命名遵循 v<主>.<次>.<补丁>
  2. CI/CD:在流水线里打标签 ➜ 构建 ➜ 发布 ➜ 生成 .asc 签名文件,供用户校验。
  3. 密钥安全:私钥离线或存 Yubikey;生成撤销证书备份。
  4. 不可随意改动已公开标签:若必须移动,务必删除重建并强推,同时公告。

一句话Tag = 里程碑;GPG = 身份 + 完整性。二者结合,让版本发布既可追溯又可信。

posted @ 2025-07-19 00:51  十三山入秋  阅读(17)  评论(4)    收藏  举报