跳到主要内容
ecdsa.com

Git 提交签名

用 OpenPGP、SSH(自 Git 2.34 起)或 X.509 密钥对 Git 提交和标签签名,使托管平台和代码审查者能够验证它们由谁创建;通过 gpg.format 和 user.signingkey 配置。
其他写法signed commitsgit commit -Sgpg.format sshgitsignverified commits

设置 git config gpg.format ssh(或 openpgp、x509)、user.signingkey 和 commit.gpgsign true;用 git log --show-signature 或 git verify-commit 验证。SSH 验证需要 gpg.ssh.allowedSignersFile,其中列出主体(principal)和密钥。Git 对提交对象本身签名,签名约束了树和父提交,但不涵盖之后的变基:变基会产生新的提交,需要重新签名。

签名与提交者账号中登记的密钥匹配时,GitHub 和 GitLab 会显示 Verified 徽章(SSH 签名密钥与身份验证密钥分开登记),分支保护规则还可以要求提交必须签名。gitsign 借助 Sigstore 以无密钥方式对提交签名。签名只能证明是哪个密钥签的名,不能证明代码没有问题;而且平台会用自己的密钥为网页界面中完成的合并重新签名。

标准与参考资料

全部术语