在团队协作或开源项目中,确保提交的真实性和可信度非常重要。Git 提交虽然记录了作者信息,但这些信息可以被轻易伪造。为了验证提交确实来自于你本人,可以使用 GPG(GNU Privacy Guard)签名 Git Commit

本文将介绍如何配置并使用 GPG 为你的 Git 提交签名。


一、为什么要使用 GPG 签名?

  • 防止身份伪造:确保提交来自真实的开发者,而不是被伪造的用户信息。

  • 增强可信度:在 GitHub、GitLab 等平台上,带有 ✅“Verified” 标记的提交更有公信力。

  • 安全合规:一些公司或开源项目要求提交必须签名。


二、安装 GPG

大多数系统都可以直接安装 GPG:

Linux (Debian/Ubuntu)

sudo apt update
sudo apt install gnupg -y

macOS (使用 Homebrew)

brew install gnupg

Windows

可以通过 Gpg4win 安装。


三、生成 GPG 密钥

执行命令生成新密钥:

gpg --full-generate-key

选择密钥类型,一般选择 RSA and RSA(默认)。
推荐选择 4096 位 长度,安全性更高。

输入以下信息:

  • Name:与你的 Git 用户名一致

  • Email:与你的 Git 配置邮箱一致

  • Passphrase:用于保护密钥

生成完成后,可以通过以下命令查看密钥:

gpg --list-secret-keys --keyid-format=long

输出类似:

/home/user/.gnupg/secring.gpg
------------------------------------
sec   rsa4096/3AA5C34371567BD2 2025-09-23 [SC]
      9FDE7DDA764A1234567890ABCDEF1234567890AB
uid                 [ultimate] Your Name <youremail@example.com>
ssb   rsa4096/1234567890ABCDEF 2025-09-23 [E]

其中 3AA5C34371567BD2 就是你的 GPG key ID。


四、配置 Git 使用 GPG

  1. 设置全局 Git 配置使用该密钥:

    git config --global user.signingkey 3AA5C34371567BD2
    
  2. 默认开启提交签名:

    git config --global commit.gpgsign true
    
  3. (可选)如果你还希望标签签名:

    git config --global tag.gpgsign true
    

五、导出公钥并添加到 Git 托管平台

  1. 导出你的公钥:

    gpg --armor --export your_email@example.com
    
  2. 复制输出内容,登录 GitHub/GitLab:

    • GitHub: Settings → SSH and GPG keys → New GPG key

    • GitLab: Preferences → GPG Keys

粘贴公钥并保存。


六、测试 GPG 签名提交

新建一次提交:

git commit -S -m "feat: 使用 GPG 签名提交"

如果配置成功,GitHub 上会显示 Verified ✅ 标签。


七、常见问题

1. 提交时报错 gpg: signing failed: No secret key

说明 Git 找不到私钥。检查:

git config --global user.signingkey

是否与 gpg --list-secret-keys 的 ID 一致。

2. 每次提交都要输入 Passphrase?

可以使用 gpg-agent 缓存口令,或在 macOS 上使用 pinentry-mac


八、总结

通过为 Git 提交添加 GPG 签名,你可以:

  • 提升提交的安全性和可信度

  • 获得平台上的 Verified 标识

  • 防止身份伪造和代码篡改

这是一个良好的开发习惯,建议所有开发者都配置。