Git 提交签名
Git 提交签名是一个重要的安全特性,它可以确保提交的真实性和完整性。通过使用 GPG 密钥对提交进行签名,其他人可以验证提交确实是由特定的开发者创建的。在 GitHub 上表现为一个绿色的 Verified 标签。

可以使用 GPG、SSH 或 X.509 密钥签名。
使用 GPG 密钥
如果你使用 Windows,可以使用下面的命令先安装 GPG:
winget install GnuPG.GnuPG
然后生成一个新的 GPG 密钥:
gpg --full-generate-key
- kind of key: 选择默认
RSA and RSA - RSA keysize:选择默认
3072 - expire time:选择默认
0 - name:和 GitHub 保持一致
- email:和 GitHub 保持一致
完成后,会提示你输入一个 passphrase,这是用来保护私钥的,推荐填写一个较复杂的密码。
如果最后提示 Key generation failed: Input/output error,可能是因为系统随机数不足,可以通过执行一些系统操作(如移动鼠标、键盘输入等)来增加随机性,然后重新运行生成命令。
生成完成后,你可以使用下面的命令查看你的 GPG 密钥:
$ gpg --list-secret-keys
gpg: checking the trustdb
gpg: marginals needed: 3 completes needed: 1 trust model: pgp
gpg: depth: 0 valid: 1 signed: 0 trust: 0-, 0q, 0n, 0m, 0f, 1u
[keyboxd]
---------
sec rsa3072 2026-01-24 [SC]
5F28C18371B50E7DEB5001AF1BF5D39FA72F650F
uid [ultimate] Saurlax <saurlax@qq.com>
ssb rsa3072 2026-01-24 [E]
BD6F2A1913A1822084307956F0DE6DB24B3368BF
其中 [SC] 表示该密钥可以用于签名和认证,[E] 表示该子密钥可以用于加密。记下 sec 行中的密钥 ID,你需要使用它来导出公钥。
然后使用下面的命令查看你的 GPG 公钥:
gpg --armor --export 5F28C18371B50E7DEB5001AF1BF5D39FA72F650F
在 GitHub 上添加 GPG 公钥即可。
最后记得在 Git 配置中设置你的 GPG 密钥:
git config --global user.signingkey 5F28C18371B50E7DEB5001AF1BF5D39FA72F650F
使用 SSH 密钥
注意:SSH 密钥签名需要 Git 2.34 或更高版本。
用于签名提交的密钥和认证密钥可以是同一个 SSH 密钥。你也可以使用下面的命令来生成一个新的 SSH 密钥:
ssh-keygen -C "your_email@example.com"
注意过程中需要重命名防止覆盖掉已有的密钥。
然后在 GitHub 上添加 SSH 公钥,类型选择为 Signing key。

然后在 Git 配置中启用 SSH 签名:
git config --global gpg.format ssh
git config --global user.signingkey path/to/your/ssh/key
对提交进行签名
只需要在提交时添加 -S 选项即可:
git commit -S -m "Your commit message"
你也可以设置为默认签名提交:
git config --global commit.gpgsign true