git commit无法在OSX上使用GPG正确签名

时间:2018-12-14 05:53:24

标签: git macos gnupg

我一直在尝试使gitgpg键一起使用,并且在大量搜索和阅读帖子之后,唯一对我有用的是:

sudo rm /usr/local/bin/gpgsm
ln -s /usr/local/bin/gpg /usr/local/bin/gpgsm

这会诱骗git运行gpg命令而不是gpgsm命令,如下所示:

GIT_TRACE=1 git commit -S -m"test"
21:24:25.489158 git.c:418               trace: built-in: git commit -S -mtest
21:24:25.493338 run-command.c:643       trace: run_command: gpgsm --status-fd=2 -bsau myKey
error: gpg failed to sign the data
fatal: failed to write commit object

我找不到有关git为什么运行gpgsm命令的任何其他信息,因为单独运行该命令会产生:

gpgsm --status-fd=2 -bsau myKey
gpgsm: can't sign using 'myKey': No public key
[GNUPG:] INV_SGNR 1 myKey
[GNUPG:] INV_RECP 1 myKey

在我阅读gpggpgsm的DB时,这似乎很有意义。

根据对CN和DNS条目的需求,

gpgsm键似乎不是git想要使用的键。很高兴在这里显示错误,因为我不想使用我的symlink hack。

环境详细信息:

  • gpg通过自制软件安装,版本为2.2.11
  • no-tty添加到~/.gnupg/gpg.conf实际上使我的情况变得更糟。
  • 更改后我已重新启动,以确保gpg代理死亡。
  • ~/.gnupg/gpg-agent.conf的内容为:pinentry-program /usr/local/bin/pinentry

1 个答案:

答案 0 :(得分:0)

由于Git尝试使用gpgsm,因此您可能已将某种配置设置为使用gpgsm作为对事物进行签名的程序。您可能需要运行git config -l --show-origin,并查看是否有一个选项可以让Git使用gpgsm。您可以搜索gpg,因为所有选项都在该顶级部分下设置。