En me référant à la solution de @sideshowbarker, et @Xavier Ho, j'ai résolu mon problème en suivant les étapes suivantes.
Supposons que gpg2 soit installé par brew,
git config --global gpg.program gpg2
brew install pinentry
gpgconf --kill gpg-agent
gpg2 -K --keyid-format SHORT
// no key found then generate new one
gpg2 --gen-key
gpg2 -K --keyid-format SHORT
.../.gnupg/pubring.gpg
sec rsa2048/ 0A61C6FC 2017-06-29 [SC] [expire : 2019-06-29]
git config --global user.signingkey 0A61C6FC
Rappelé par mon collègue, besoin d'annexer
export GPG_TTY=$(tty)
dans ~/.zshrc si vous utilisez zsh, sinon ajouter à ~/.bash_profile
Pour macOS,
le gpg2 est combiné avec le gpg dans brew et donc la commande gpg est dirigée vers gpg2
brew install gpg2
brew info gpg
gnupg : stable 2.2.6 (mis en bouteille)
git config --global gpg.program gpg
gpg -K --keyid-format SHORT
et il y a pinentry-mac pour la saisie de la phrase de passe
brew install pinentry-mac
vim ~/.gnupg/gpg-agent.conf
Ajouter une ligne
pinentry-program /usr/local/bin/pinentry-mac
Rappelé par mon collègue, besoin d'annexer
export GPG_TTY=$(tty)
dans ~/.zshrc si vous utilisez zsh, sinon ajouter à ~/.bash_profile
7 votes
Pour les utilisateurs de Mac. J'ai eu ce problème. Les conseils de cette page m'ont permis de réaliser que j'avais peut-être deux versions de gpg installées et c'est le cas. Une de Brew et une de GPG Suite. Je voulais utiliser la version de GPG Suite car elle permet de mettre en cache la phrase de passe dans le trousseau du système. La désinstallation de la version de brew a résolu mes problèmes. Ainsi que la réponse de @sideshowbarker concernant la suppression de gpg-agent. Je suppose donc que les configurations de chacun interféraient les unes avec les autres.
2 votes
Duplicata possible de gpg n'a pas réussi à signer les données fatal : failed to write commit object [Git 2.10.0]
0 votes
Duplicata possible de stackoverflow.com/questions/41502146/
5 votes
Je viens de rencontrer un problème avec la signature gpg, le problème était que mon dépôt git n'avait pas sa clé de signature gpg.signingkey locale, mais celle de gllobal l'était. Donc, il suffit de mettre
git config --local user.signingkey
à la bonne clé et il y aura à nouveau une signature automatique. et peut-être désactivez le global avecgit config --global --unset user.signingkey
0 votes
En dehors de ce que les autres ont dit, j'ai également dû m'assurer que mon user.email correspondait à ce que j'ai entré lors de la génération de la clé :
git config --global user.email 'SAME EMAIL'