我曾经用gpg签名过我的提交,一切都很好,但是我突然收到了以下消息:

gpg: keyblock resource '/c/Users/username/path/to/project/C:\Users\username\.gnupg/pubring.kbx': No such file or directory
gpg: skipped "my_key": No secret key
gpg: signing failed: No secret key
error: gpg failed to sign the data
fatal: failed to write commit object

请注意,关键块资源的路径由两个路径组成,并且实际上是无效的。

有关我的设置的信息

总的来说,我的提交是自动签名的,我的设置来自this answer:我像平常一样设置了gpg,然后安装了gpg2,并每次使用shell文件将密码短语输送到gpg中。不,我没有让gpg-agent进行此操作,尽管如果您知道该怎么做,请回答以下问题:The key whose key-id is in the signature did not sign this commit

我有一个环境变量GNUPGHOME指向C:\Users\username\.gnupg。我尝试将其更改为C:/Users/username/.gnupg,但斜线也刚刚在错误中更改。我尝试将其更改为/c/Users/username/.gnupg,但错误消息变为
gpg: Fatal: can't create directory '/c/Users/username/path/to/project/C:/Users/username/.gnupg': No such file or directory

我也不知道导致此问题的系统上发生了什么变化。

相关问题

这个问题与其他问题非常相似,但是没有解决:Git commit signing GPG issue
评论是检查gitconfig中的路径,但是我认为我在任何gitconfig中都没有指向gnupg目录的路径,无论如何我都不会以 repo 的路径作为前缀。我的主要~\.gitconfig中有这个:
[user]
    signingkey = my_key
[commit]
    gpgsign = true
[gpg]
    program = C:\\Users\\username\\gpg-no-tty.sh

在这里还发现了具有相同问题的人:https://jira.atlassian.com/browse/SRCTREEWIN-8527

gnupg的标签描述中,我无法确定这个问题是属于此问题还是属于 super 用户,因为我不确定这是程序性还是直接使用(两者都是?)。

最佳答案

我遇到过同样的问题。要修复它,我只需要在.gitconfig文件中指定gpg.program变量即可指向我的Gpg4win安装,如下所示:

git config --global gpg.program "%PROGRAMFILES(x86)%\GnuPG\bin\gpg.exe"

或者
git config --global gpg.program "C:\Program Files (x86)\GnuPG\bin\gpg.exe"

显然,该路径取决于您的gpg二进制文件所在的位置。完成此操作后,它便可以使用我的GNUPGHOME环境变量,并找到我的系统 key 环用于签名。但是,这将使用pinentry提示您输入私钥密码。

我相信会出现此问题,因为Git for Windows附带了默认使用的gpg版本。无论出于何种原因,在执行命令签署提交时,本地 repo 路径似乎都以gpg主目录路径为前缀。

希望这会有所帮助

关于git - 找不到gpg : keyblock resource pubring. kbx,因为 repo 路径以gnupg主页为前缀,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52661839/

10-13 07:11