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

发布: (2025年12月29日 GMT+8 13:37)
3 min read
原文: Dev.to

Source: Dev.to

Cover image for How to Verify Your Git Commits with GPG: A Step-by-Step Guide

在开源和协作开发的世界里,身份就是一切。当你在 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

  1. 导出公钥:

    gpg --armor --export 3AA5C34371567BD2
  2. 复制完整输出,包括 BEGINEND 行。

  3. 在 GitHub 中,进入 Settings → SSH and GPG keys → New GPG key,粘贴密钥并保存。

6. 验证是否生效

创建一个已签名的提交:

git commit -m "My first signed commit"

将提交推送到 GitHub。你应该会在仓库历史记录中看到提交旁的 Verified 徽章。

Verified Badge Example

故障排除

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

相关文章

阅读更多 »

我GitHub中的隐藏金子

我有一个 App 的想法!很长一段时间里,我把副项目当作一次次单独的赌注。我会坐在电脑前,工作数小时,构建一些……