在 Windows 上签署 git commit 时出现“无密钥”错误

giv*_*all 8 windows git gnupg

尝试签署提交时出现此错误:

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
Run Code Online (Sandbox Code Playgroud)

这是 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>
Run Code Online (Sandbox Code Playgroud)

这是具有相同密钥的 git config

user.signingkey=EF617ACA9EC3XXXX
user.email=email@gmail.com
Run Code Online (Sandbox Code Playgroud)

知道出了什么问题吗?

Eri*_*nez 36

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

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

  • 我之前设置过这个,但它对我不起作用,所以我将 gpg 可执行文件更新为 `C:\Program Files\Git\usr\bin\gpg.exe` 并且它起作用了。 (2认同)

CTS*_*_AE 14

如果有人像我一样是个 dufus,我会收到此错误,因为我在通过以下方式直接编辑文件时 gitkey 错误:git config --global -ecode ~/.gitconfig任何您喜欢的编辑器风格。

\n
    \n
  • singingkey 代替
  • \n
  • signingkey\xe2\x80\x8d\xe2\x99\x82\xef\xb8\x8f
  • \n
\n

  • 这让我笑出了声。感谢那。 (3认同)

小智 7

在 Windows 10 git bash 中面临同样的问题。这样做解决了我的问题。你可以通过运行找到这条路径where gpg

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


Von*_*onC 6

首先检查git config gpg.program以查看是否为gpggpg2(如此处所示)。

并键入where gpgndwhere gpg2以检查 GPG 程序考虑的路径。

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

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

  • 不管怎样,将 gpg.exe 重命名为 gpg2.exe 并在配置中更改它会有所帮助,这非常奇怪。 (2认同)