"No secret key" 在 Windows 上签署 git 提交时出错

"No secret key" error when signing git commit on Windows

我在尝试签署提交时遇到此错误:

git commit -S -m "test"
gpg: skipped "EF617ACA9EC3XXXX": No secret key
gpg: signing failed: No secret key
error: gpg failed to sign the data
fatal: failed to write commit object

这是 gpg --list-secret-keys --keyid-format LONG 的输出

钥匙在那里

sec   rsa4096/EF617ACA9EC3XXXX 2020-05-17 [SC] [expires: 2022-05-17]
      AD68154000A712DCD161D826EF617ACA9EC3XXXX
uid                 [ultimate] name <email@gmail.com>

这是 git 具有相同密钥的配置

user.signingkey=EF617ACA9EC3XXXX
user.email=email@gmail.com

知道哪里出了问题吗?

先检查 git config gpg.program to see if this is gpg or gpg2 (as ).

然后键入 where gpgwhere gpg2 以检查 GPG 程序考虑了哪个路径。

我建议将 gpg.program 设置为 gpg2,并将您的 gpg.exe(假设其版本为 2.x)复制到 gpg2.exe

这应该会强制 Git/GPG 充当 gpg2。

如果有人像我一样是 dufus,我会收到此错误,因为我在通过 git config --global -ecode ~/.gitconfig 或您喜欢的任何编辑器直接编辑文件时输入了错误的 gitkey。

  • singingkey 而不是
  • signingkey‍♂️

在 windows 10 git bash 中遇到了同样的问题。这样做解决了我的问题。您可以通过 运行 where gpg

找到此路径

$ git config --global gpg.program "C:\Program Files\Git\usr\bin\gpg.exe"

git config --global gpg.program "c:/Program Files (x86)/GnuPG/bin/gpg.exe"

我安装了 Kleopatra 并在其中生成了我的密钥。在我 运行 上面的命令之前,我无法创建提交。