无法承诺在Windows 10(GnuPG)上使用gpg2进行签名

时间:2016-11-26 19:02:59

标签: git github gnupg

我正在尝试生成密钥并签署提交。我的重点清单:

gpg2 --list-keys

C:/Users/raski/AppData/Roaming/gnupg/pubring.gpg

------------------------------------------------
pub   2048R/8E3A3251 2016-11-26
uid       [ultimate] My Name <raski@example.com>
sub   2048R/29C8D116 2016-11-26

git config --global -l

filter.lfs.clean=git-lfs clean -- %f
filter.lfs.smudge=git-lfs smudge -- %f
filter.lfs.required=true
user.name=roma
user.email=raski@example.com
user.signingkey=8E3A3251
commit.gpgsign=true
gpg.program=D:/Programs/GnuPG/pub/gpg2

我尝试提交:

git commit -m "initial"

以前,我在Github设置中添加了我的公共PGP密钥。但是,我错了:

gpg: skipped "2048R/8E3A3251": No secret key
gpg: signing failed: No secret key
error: gpg failed to sign the data
fatal: failed to write commit object

这就是为什么它仍然使用gpg而不是gpg 2,尽管我已经配置了gpg2的路径。可能存在什么问题?

2 个答案:

答案 0 :(得分:2)

  

这就是为什么它仍然使用gpg而不是gpg 2,尽管我已经配置了gpg2的路径。

那是因为git for windows本身在gpg.exe文件夹中包含<git>/usr/bin 1.x,由git命令使用。

  

可能存在什么问题?

您需要在<gpg2>\latest\pub文件夹中将gpg2.exe复制到gpg.exe,这样PATH可能实际上包含gpg.exe 2.x之前的gpg.exe来自git的{​​{1}} 1.x 或者,如果它不起作用,请将<gpg2>\latest\pub\gpg2.exe复制到<git>/usr/bin/gpg.exe

答案 1 :(得分:2)

只需删除gpg.exe下的<git>/usr/bin文件。