Git签名提交 - 如何压制"你需要一个密码来解锁密钥......"

fri*_*mle 18 git gnupg git-commit

我更改了我的全局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]
Run Code Online (Sandbox Code Playgroud)

更糟糕的是,当我执行一个简单的存储时,此消息被打印两次,不必要地填充我的控制台(我假设为创建的两个提交对象中的每一个都有一个).

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

Von*_*onC 23

这是gpg配置问题而不是git配置问题.

由于您使用的是代理,因此可以将解决方法添加no-tty到您的代理中gpg.conf.

echo 'no-tty' >> ~/.gnupg/gpg.conf
Run Code Online (Sandbox Code Playgroud)

(这似乎--batch选项更好)


kmo*_*oor 9

接受的答案对我来说不适用于 Git version 1.8.3.1on Fedora 25

什么工作?

  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'