You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Win10下Git提交签名报gpg skipped KEY无密钥错误

Windows 10下Git提交签名报gpg skipped KEY No secret key错误修复方案

核心原因说明

该报错和GnuPG 2.x版本是否需要gpg2程序无关,网上旧教程提到的gpg2配置是GnuPG 1.x时代的遗留要求,2.x版本本身单程序即可完成签名操作,不需要额外下载gpg2组件,Git for Windows自带的gpg程序已经是2.x版本。
绝大多数该场景下的报错根源是 系统内存在多套GPG环境,密钥存储在其中一套的密钥环中,Git调用的是另一套无对应私钥的GPG程序,和配置拼写、路径正确性无关。

修复步骤

  • 第一步:定位私钥实际所属的GPG程序
    分别执行以下两条命令,检查两套常见GPG程序的私钥列表,确认哪套程序里存了你生成的、ID为ABCDMYKEY12345的私钥:
    # 检查你当前配置的32位独立安装版GnuPG的私钥
    "C:\Program Files (x86)\GnuPG\bin\gpg.exe" --list-secret-keys --keyid-format=long
    
    # 检查Git for Windows自带64位GnuPG的私钥(默认安装路径如下)
    "C:\Program Files\Git\usr\bin\gpg.exe" --list-secret-keys --keyid-format=long
    
  • 第二步:修正Git的GPG程序指向
    哪条命令能返回你的目标私钥,就将对应程序路径设置为Git全局配置的gpg程序路径。例如Git自带gpg能查到密钥时,执行以下命令修改配置:
    git config --global gpg.program "C:\Program Files\Git\usr\bin\gpg.exe"
    
    如果你需要固定使用独立安装的32位GnuPG,直接用该程序重新生成密钥,或将已生成的私钥导入到该程序的密钥环中,再同步更新Git配置里的user.signingkey为对应密钥的长ID即可。
  • 第三步:功能验证
    执行空提交命令测试签名功能:
    git commit --allow-empty -m "gpg sign test"
    
    命令执行无报错即修复完成。

其他偶发诱因排查

如果上述步骤执行后仍报错,可逐一排查以下问题:

  • 确认user.signingkey配置值为私钥的16位长ID,即--list-secret-keys --keyid-format=long返回结果中sec行斜杠后的字符串,不要使用短ID、密钥用户名/邮箱作为signingkey值。
  • 若私钥设置了保护密码,确认密码输入正确,密码校验失败时部分版本GPG会抛出“找不到私钥”的误导性报错。
  • 若你自定义过GPG的GNUPGHOME环境变量,确认当前运行Git的用户对该自定义路径有读写权限,权限不足时GPG无法读取密钥环内容也会报同类错误。

内容的提问来源于stack exchange,提问作者toshiomagic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 14:01:04