Git没有要求我输入gpg密码,导致我的提交失败

34

当我执行git commit -a -S -m "Commit Message"时,出现以下错误:

You need a passphrase to unlock the secret key for
user: "Username (Gpg Key) <email-id>"
2048-bit RSA key, ID 2487BE7C, created 2016-10-03

error: gpg failed to sign the data
fatal: failed to write commit object

但是,在提交时它甚至不会询问/提示我的密码。那么,在使用 gpg 的 -S 标志时,我应该在哪里输入我的密码呢?

但是,当我提交时,它甚至不要求/提示输入我的口令。那么,在使用 gpg 的-S标志时,我应该在哪里输入我的口令呢?


1
你确定gpg可以读取输入吗?如果stdin被关闭,你会看到上面的错误消息。如果git命令不是在交互式shell中运行,则可能需要运行gpg-agent以处理密码输入。 - G. Sliepen
@G.Sliepen,请问您能告诉我如何启动它吗? - Dawny33
3个回答

41

我有类似的问题。我有gpg和gpg2两个可执行文件,它们都指向GPG版本2.0.30。但是我没有被提示输入我的口令。

在你的bash配置文件中(我在我的“.zshrc”文件中做了这件事),添加以下行:

export GPG_TTY=$(tty)

非常感谢,这在我的macOS bash上对我有用。 - gpanda
完全忘记了.zshrc,我一直在尝试其他帖子中的方法,但是在我的.bashrc中,哎呀!这个方法有效,谢谢! - CTS_AE

11

它不再提示我,所以我不得不终止守护进程

ps aux | grep gpg
mark              3129   0.0  0.0  4397952    820   ??  Ss    8Mar19   0:28.84 gpg-agent --homedir /Users/Mark/.gnupg --use-standard-socket --daemon
mark             18137   0.0  0.0  4286492    848 s000  R+    3:43pm   0:00.00 grep --color=auto --exclude-dir=.bzr --exclude-dir=CVS --exclude-dir=.git --exclude-dir=.hg --exclude-dir=.svn gpg

然后

sudo kill -9 3129

然后它起作用了。可能是一个稍微不同的问题。


4
对我来说,这解决了我的问题。看起来我以一种不好的方式退出了之前的提示符,这让守护程序感到困惑。 - Antonio Martinović
谢谢。 - kukabi

1
如果您使用的是OSX系统,似乎brew的gpg更新将gpg位置更改为gpg1,您可以更改git查找gpg的二进制文件:
git config --global gpg.program gpg1

请看这篇中等博客文章:this medium blog post

对我来说仍然是gpg,但它不会要求密码并且失败了。还有其他建议吗? - DiegoRBaquero

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接