J'ai installé GPG à partir de brew.
brew install gpg
C'est gnupg2-2.0.30_2.
Lorsque je m'engage, j'obtiens un message d'erreur:
You need a passphrase to unlock the secret key for
user: "Max Mustermann (mycomment) <[email protected]>"
2048-bit RSA key, ID 1111AAAA, created 2017-01-05
error: gpg failed to sign the data
fatal: failed to write commit object
J'ai utilisé la commande:
gpg --list-secret-keys | grep ^sec
et ça me rend:
sec 2048R/1111AAAA 2017-01-05
Ensuite, j'ai utilisé cette commande:
git config --global user.signingkey 1111AAAA
commit me renvoie le même message d'erreur.
Comment puis-je résoudre ce problème?
Si vous n’êtes pas du tout invité à saisir une phrase secrète (vous ne mentionnez pas si vous l’êtes ou non…), la solution peut être d’installer également un programme pour faciliter cela. Le plus courant est pinentry .
brew install pinentry-mac
Donc, installez cela et essayez à nouveau mai pour que les choses fonctionnent. Sinon, une autre chose à faire est de vous assurer que git
l'utilise/trouve le bon programme GPG. De nos jours, vous devriez vraiment utiliser gpg2
, donc si vous ne l'avez pas déjà installé, faites:
brew install gnupg2
Et puis, pour dire à git
que le programme GPG vous tient à cœur, ceci:
git config --global gpg.program gpg2
À ce stade, essayez à nouveau votre commit et les choses pourraient bien fonctionner.
Sinon, essayez ceci:
echo "pinentry-program /usr/local/bin/pinentry-mac" >> ~/.gnupg/gpg-agent.conf
… Puis réessayez.
Remarque: Selon certains commentaires ci-dessous, pour que cette modification prenne effet, vous devrez peut-être redémarrer après avoir effectué la modification.
Pour toute personne confrontée à ce problème sur les machines MacOS , essayez ceci:
brew uninstall gpg
brew install gpg2
brew install pinentry-mac
(Si nécessaire)gpg --full-generate-key
Créez une clé en utilisant un algorithme.gpg --list-keys
git config --global user.signingkey <Key from your list>
git config --global gpg.program /usr/local/bin/gpg
git config --global commit.gpgsign true
gpg --armor --export <key>
Et ajoutez cette clé à GitHub sur les clés GPG: https://github.com/settings/keys (avec START et END ligne incluse)Si le problème persiste:
test -r ~/.bash_profile && echo 'export GPG_TTY=$(tty)' >> ~/.bash_profile
echo 'export GPG_TTY=$(tty)' >> ~/.profile
Si le problème persiste:
Installez https://gpgtools.org et signez la clé que vous avez utilisée en appuyant sur Signer dans la barre de menus: Clé -> Signe
Si le problème persiste:
Allez dans: votre fichier global .gitconfig
Qui dans mon cas est à: /Users/gent/.gitconfig
Et modifiez le . Gitconfig fichier (veuillez vous assurer que l'e-mail et le nom sont identiques à ceux que vous avez créés lors de la génération de la clé):
[user]
email = [email protected]
name = Gent
signingkey = <YOURKEY>
[gpg]
program = /usr/local/bin/gpg
[commit]
gpsign = true
gpgsign = true
[filter "lfs"]
process = git-lfs filter-process
required = true
clean = git-lfs clean -- %f
smudge = git-lfs smudge -- %f
[credential]
helper = osxkeychain
p.s J'ai pris cette réponse de ma réponse précédente ici: gpg n'a pas réussi à signer les données fatales: n'a pas pu écrire l'objet de validation [Git 2.10.0]
Votre question suppose que vous voulez réellement signer vos commits. Si vous ne le faites pas, le correctif est très simple - désactivez la signature de validation:
git config --global commit.gpgsign false
Dans mon cas, j'avais hérité de certains paramètres de configuration git par défaut, dont la signature de validation.