无法在Windows 10上使用gpg2签署提交(GnuPG)

3
我将尝试生成密钥并签署提交。我的密钥列表如下:

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而不是gpg2,尽管我已经配置了gpg2的路径。可能存在什么问题呢?


“gpg2 -K”(又称“gpg2 --list-secret-keys”)的输出是什么?你只展示了公钥的一半。 - jthill
我得到了相同的错误。在 Git Bash 中,gpg --version 命令是否告诉您旧版本? - Ini
2个回答

2
这是因为git for windows本身包含一个gpg.exe 1.x,位于/usr/bin文件夹中,被git命令使用。所以它仍在使用gpg而不是gpg 2,尽管我已经配置了gpg2的路径。
问题可能存在于/latest/pub文件夹中,您需要将gpg2.exe复制到gpg.exe中,这样PATH可能会在git的gpg.exe 1.x之前包含一个gpg.exe 2.x。或者,如果不起作用,请将/latest/pub/gpg2.exe复制到/usr/bin/gpg.exe中。

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

当你升级 Git for Windows 时,需要记得重新删除 gpg.exe - mrm

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接