签名验证回答什么
验证签名回答的是「这条提交是不是某个账号用它登记的密钥签的」。本地可以用日志命令或专门的验证命令检查,平台上则显示验证徽标,点开能看到密钥信息。需要强调的是:验证通过只说明来源与账号对应,不代表代码经过评审,也不代表它安全。
基本信息
| 本地查看 | 日志命令显示签名状态,或对指定提交单独验证 |
|---|---|
| 平台展示 | 验证通过或未验证的标签,点开可见密钥信息 |
| 信任模型 | 验证密钥属于该账号,不等于代码正确 |
| 输出字母 | 有效、损坏、不可信、无签名分别用不同字母表示 |
典型使用场景
- 发布之前确认标签与提交的签名状态
- 排查为什么平台上显示未验证
- 批量筛查一批提交中哪些没有签名
- 合规场景中要求关键分支的提交可验证
- 迁移签名方式后确认历史提交仍然可验证
常用示例
常用示例
git log --show-signature -3 # 查看最近提交的签名详情
git verify-commit HEAD # 验证指定提交
git log --format='%h %G? %s' -10 # 用字母汇总签名状态状态字母读法
| 状态 | 含义 | 处理方向 |
|---|---|---|
| 有效 | 签名正确并且可信 | 无需处理 |
| 损坏 | 签名无法校验 | 检查提交是否被改写 |
| 不可信 | 密钥未进入本地信任来源 | 先导入公钥或声明信任 |
| 无签名 | 该提交没有签名 | 按团队要求决定是否补签 |
不可信状态常见于密钥未加入本地信任来源;企业内可以约定信任来源之后再做批量校验。
平台上的验证徽标只证明签名与账号对应,不能替代评审、测试与人工判断。
排查步骤
- 先确认自己看的是哪条提交,历史重写之后哈希会变化
- 本地验证之前先导入对方公钥或配置允许签名者清单
- 平台显示未验证时,核对账号里登记的密钥是否匹配
- 批量筛查时用格式化的日志输出,一次性看完整范围