Reputation: 349
I am having trouble signing commits. With the following git config:
user.name=Bob
user.email=[bob's email]
user.signingkey=ABCDEFGH
user.user=bob1
gpg.program=gpg2
I was told to include only the first eight characters of the secret key.
After staging, upon git commit -S -m "commit message"
, I receive the following errors:
error: gpg failed to sign the data
fatal: failed to write commit object
It seems that most users who encounter this error are on Macs and have some extra setup to do. But I'm on Kali Linux.
Any advice?
Upvotes: 11
Views: 21623
Reputation: 669
Had the same problem using WSL (Ubuntu). Working solution for me was adding export GPG_TTY=$(tty)
into ~/.bashrc
, thanks to this answer.
Upvotes: 13
Reputation: 1793
For those who followed the answer but could not make it work. There is a chance that you had tried other solutions and accidentally did this (which is for MacOSX, not Linux)
git config --global gpg.program=gpg2
You should only do that if you are using MacOSX.
For Linux, you can fix it by unset
-ing that entry first by running this command (because your system uses gpg
NOT gpg2
).
git config --global --unset gpg.program
Now you can follow the accepted answer in this page to tell Git to use your key.
Upvotes: 4
Reputation: 311711
I was told to include only the first eight characters of the secret key.
The value of user.signingkey
is a key id identifying which key git should use when generating the signature.
There's a complete example in the official documentation that shows how this should work. If gpg --list-keys
shows something like:
/Users/schacon/.gnupg/pubring.gpg
---------------------------------
pub 2048R/0A46826A 2014-06-04
uid Scott Chacon (Git signing key) <[email protected]>
sub 2048R/874529A9 2014-06-04
Then the key id is 0A46826A
:
git config --global user.signingkey 0A46826A
Upvotes: 25