web-dev-qa-db-ja.com

Git署名済みコミット-「秘密鍵のロックを解除するにはパスフレーズが必要です...」を抑制する方法

すべてのコミットに署名するようにグローバルGit構成を変更しました。また、毎回パスワードを入力する必要がないように、gpg-agentを使用しています。

これで、新しいコミットを行うたびに、次の5行がコンソールに出力されます。

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

さらに悪いことに、単純なスタッシュを実行すると、このメッセージが表示されますtwiceが不必要にコンソールに入力されます(作成された2つのコミットオブジェクトのそれぞれに1つあると想定しています)。

この出力を抑制する方法はありますか?

18
friederbluemle

これはgitの問題よりもgpgの構成の問題です。

エージェントを使用しているため、回避策としてno-ttygpg.confに追加できます。

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

(これは --batchオプションよりもうまく機能しているようです

23
VonC

version 1.8.3.1のGit 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. 現在、Gitでコミットに署名することは、gpg-agentから必要なパスフレーズを取得することで機能します。
    $ git commit -S -m 'my commit message'

4
kmonsoor