设置 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 以无密钥方式对提交签名。签名只能证明是哪个密钥签的名,不能证明代码没有问题;而且平台会用自己的密钥为网页界面中完成的合并重新签名。