Git签署提交 - 如何抑制“您需要输入密码短语以解锁秘钥…”的提示

23

我将我的全局 Git 配置更改为签署所有提交。我还使用 gpg-agent,这样我就不必每次输入密码。

现在,每当我进行新的提交时,我会在控制台上打印出以下五行:

[blank line]
You need a passphrase to unlock the secret key for
user: "John Doe <mail@gmail.com>"
2048-bit RSA key, ID ABCDEF12, created 2016-01-01
[blank line]

更糟糕的是,当我执行简单的stash时,这个消息会被打印两次,不必要地填充了我的控制台(我认为每个创建的两个提交对象都需要一次)。

有没有办法抑制这个输出?

2个回答

24

这更多是一个 GPG 配置问题,而非 git 问题。

由于您正在使用代理,您可以通过在您的 gpg.conf 中添加 no-tty 作为解决方法。

echo 'no-tty' >> ~/.gnupg/gpg.conf

(这似乎比--batch选项更好用,请参考此处


1
这似乎使我无法使用 gpg --sign-key xxxxxxxx 签署密钥。 - Xavier Ho
1
@XavierHo 好的:请提出一个新问题,包括您的操作系统、Git版本和确切的设置,以说明此问题。 - VonC
我先要探索一下,也许设置一个最小的测试案例。谢谢。 - Xavier Ho

11

对我来说,被接受的答案在Fedora 25上的Git 版本1.8.3.1上不起作用。

什么是有效的?

  1. 检查是否正在运行gpg-agent,通过
    $ gpg-agent

  2. 确保gpg-agent缓存中有您的密码。要确保它在那里,请签名当前目录中的任何文件。如果密码不在缓存中,现在将会询问。
    $ gpg -s any-file.txt

  3. 不要忘记删除新生成的已签名文件any-file.txt.gpg
    $ rm any-file.txt.gpg

  4. 现在,通过从gpg-agent获取所需的密码,使用Git签署提交现在将起作用。
    $ git commit -S -m 'my commit message'


有趣。在我编写它的时候确实有效。依然如此,+1。 - VonC
1
很好,步骤 gpg -s any-file.txt 是一个不错的缓存口令的方法! - Fernando Gonzalez Sanchez

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