使用git签名时没有密钥

Pab*_* C. 10 git gnupg

设定后

$ gpg --list-keys
/home/pablo/.config/gnupg/pubring.gpg
-------------------------------------
pub   rsa4096/46F257F2 2014-09-16 [expires: 2015-09-16]
uid       [ultimate] Pablo Olmos de Aguilera Corradini (Personal) <mail@tld.com>
Run Code Online (Sandbox Code Playgroud)

并将信息放在gitconfig上:

[user]
    name = Pablo Olmos de Aguilera Corradini
    email = mail@tld.com
    signinkey = 46F257F2
[commit]
    gpgsign = true
Run Code Online (Sandbox Code Playgroud)

我明白了:

gpg: skipped "Pablo Olmos de Aguilera Corradini <mail@tld.com>": 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).如果我删除了所有内容gitconfig,并尝试仅使用它-S,我得到相同的错误,这让我觉得git将我的用户名和电子邮件传递给gpg,并且uid包含"注释" (Personal),所以它没有找到任何:

$ gpg --list-keys "Pablo Olmos de Aguilera Corradini <mail@tld.com>"
gpg: error reading key: No public key
Run Code Online (Sandbox Code Playgroud)

我不确定这是不是来自git的bug,或者它是预期的结果而且我遗漏了一些东西:).

PS.-我的猜测是我可以创建另一个uid没有评论,它应该工作.

小智 11

你的gitconfig中有一个拼写错误.应该是签名密钥,而不是signinkey

  • 这就是为什么你应该使用`git config`而不是手动编辑`.gitconfig`文件中的条目的原因之一. (4认同)