如何使用 GPG 验证你的 Git 提交:分步指南
Source: Dev.to

在开源和协作开发的世界里,身份就是一切。当你在 Linux 内核中看到 torvalds 的提交时,如何确认这真的来自 Linus Torvalds 本人,而不是冒名顶替者?
答案是 GPG 签名。
通过使用 GPG(GNU Privacy Guard)密钥对提交进行签名,你可以用密码学方式验证代码确实来自你本人且未被篡改。GitHub(以及 GitLab)会为此显示一个闪亮的绿色 “Verified” 徽章。
1. 安装 GPG
macOS (Homebrew)
brew install gnupg
Linux (Debian/Ubuntu/Pop!_OS)
sudo apt install gnupg
Windows
下载并安装 Gpg4win。
2. 生成 GPG 密钥
gpg --full-generate-key
系统会提示你输入以下内容:
- 密钥类型:
(1) RSA and RSA(默认) - 密钥大小:
4096 - 过期时间:
0(密钥永不过期)——如果你的策略要求,请自行调整 - 真实姓名: 你的全名
- 电子邮件地址: 必须与 GitHub 上已验证的邮箱匹配
- 密码短语: 用于保护私钥的强密码
3. 获取密钥 ID
列出你的私钥以查找长格式的 Key ID:
gpg --list-secret-keys --keyid-format LONG
示例输出:
sec rsa4096/3AA5C34371567BD2 2024-01-01 [SC]
…
uid [ultimate] John Doe
在此示例中,3AA5C34371567BD2 即为你将要使用的 Key ID。
4. 告诉 Git 你的密钥
全局设置签名密钥:
git config --global user.signingkey 3AA5C34371567BD2
(将 3AA5C34371567BD2 替换为你的实际 Key ID。)
为所有提交启用自动签名(推荐):
git config --global commit.gpgsign true
5. 将公钥添加到 GitHub
-
导出公钥:
gpg --armor --export 3AA5C34371567BD2 -
复制完整输出,包括
BEGIN和END行。 -
在 GitHub 中,进入 Settings → SSH and GPG keys → New GPG key,粘贴密钥并保存。
6. 验证是否生效
创建一个已签名的提交:
git commit -m "My first signed commit"
将提交推送到 GitHub。你应该会在仓库历史记录中看到提交旁的 Verified 徽章。

故障排除
- “Unverified” 徽章: 确认
git config user.email中设置的邮箱与 GPG 密钥中嵌入的邮箱一致,并且该邮箱已在你的 GitHub 账户设置中完成验证。