问题
I changed my global Git configuration to sign all commits. I also use gpg-agent so that I don't have to type my password every time.
Now every time I make a new commit I see the following five lines printed to my console:
[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]
Even worse, when I do a simple stash, this message is printed twice, needlessly filling my console (I assume for one for each of the two commit objects that are created).
Is there a way to suppress this output?
回答1:
This is more a gpg configuration issue than a git one.
Since you are using an agent, you could as a workaround add no-tty
to your gpg.conf
.
echo 'no-tty' >> ~/.gnupg/gpg.conf
(this seems working even better than the --batch option)
回答2:
The accepted answer doesn't work for me for Git version 1.8.3.1
on Fedora 25
.
What worked ?
Check if
gpg-agent
is running by$ gpg-agent
Make sure
gpg-agent
has your passphrase in cache. To make sure it is there, sign any file in the current directory. If the passphrase was not in the cache, it will be asked now.$ gpg -s any-file.txt
Don't forget to delete the newly generated signed
any-file.txt.gpg
$ rm any-file.txt.gpg
Now, signing commits with Git will work now by taking the required passphrase from gpg-agent.
$ git commit -S -m 'my commit message'
来源:https://stackoverflow.com/questions/37763170/git-signed-commits-how-to-suppress-you-need-a-passphrase-to-unlock-the-secret