我一直在尝试使git
与gpg
键一起使用,并且在大量搜索和阅读帖子之后,唯一对我有用的是:
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
在我阅读gpg
和gpgsm
的DB时,这似乎很有意义。
gpgsm
键似乎不是git
想要使用的键。很高兴在这里显示错误,因为我不想使用我的symlink hack。
环境详细信息:
2.2.11
no-tty
添加到~/.gnupg/gpg.conf
实际上使我的情况变得更糟。~/.gnupg/gpg-agent.conf
的内容为:pinentry-program /usr/local/bin/pinentry
答案 0 :(得分:0)
由于Git尝试使用gpgsm
,因此您可能已将某种配置设置为使用gpgsm
作为对事物进行签名的程序。您可能需要运行git config -l --show-origin
,并查看是否有一个选项可以让Git使用gpgsm
。您可以搜索gpg
,因为所有选项都在该顶级部分下设置。