我曾经用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/