我刚开始使用git,我通过自制软件安装git和gpg。 由于某种原因,当我提交git时,我得到了这个错误 我看了很多关于这个话题的stackoverflow问题,但没有一个对我有用。 如何修复此错误以成功上传?
error: gpg failed to sign the data
fatal: failed to write commit object
我刚开始使用git,我通过自制软件安装git和gpg。 由于某种原因,当我提交git时,我得到了这个错误 我看了很多关于这个话题的stackoverflow问题,但没有一个对我有用。 如何修复此错误以成功上传?
error: gpg failed to sign the data
fatal: failed to write commit object
当前回答
解决方案:
Issue: Disabled loopback pinentry mode
要解决这个问题,你需要在~/.gnupg/gpg.conf中启用环回pinentry模式:
cat <<'EOF' >> ~/.gnupg/gpg.conf
use-agent
pinentry-mode loopback
EOF
还有~/.gnupg/gpg-agent.conf(如果文件不存在就创建文件):
cat <<'EOF' >> ~/.gnupg/gpg-agent.conf
allow-loopback-pinentry
EOF
然后使用echo RELOADAGENT | gpg-connect-agent重新启动代理,您应该可以运行了!
源
其他回答
如果你之前已经安装了pinentry和gpg,它突然就不工作了:
检查你的gpg是否正常工作:
echo "test" | gpg --clearsign
如果它说gpg: signing failed: No pinentry, 只需重新启动GPG守护进程客户端,它会不时卡住:
gpgconf --kill gpg-agent
现在它应该工作了:
echo "test" | gpg --clearsign
我在升级到gnupg 2.x后遇到了这个问题。可以看到gpg2以不同的方式引用键:在~/.gitconfig中仍然有signingkey = ABC98F11 (gpg v1设置)。gpg2的键标识符较长。用gpg -list-secret-keys查找
这在ubuntu 18.04上对我有效
检查你的gpg密钥
gpg -K --keyid-format LONG
如果得到空白响应,则生成一个GPG密钥
gpg --generate-key
重新运行第一个命令,你应该得到一个输出:
sec rsa3072/95A854E0593B3214 2019-05-06 [SC] [expires: 2021-05-05]
AF2F7514568DC26B0EB97B9595A854E0593B74D8
uid [ultimate] yourname<your_email>
ssb rsa3072/EFD326E6C611117C 2019-05-06 [E] [expires: 2021-05-05]
设置git签名密钥
git config --global user.signingkey 95A854E0593B3214
然后你就可以开始了!(——global是可选的)
或者,如果您不介意用ssh密钥签名
git config commit.gpgsign false
请注意,由于这里和这里的问题存在安全问题,不建议这样做
我刚刚在VSCode更新时遇到了这个问题。我认为GPG代理挂起了,因为该命令在出错之前运行了几秒钟。运行gpgconf——kill gpg-agent重置并为我修复了它。
对我来说,一个简单的brew卸载gnupg && brew桶重新安装gpg-suite解决了这个问题。
它会手动卸载(在我的情况下)自定义安装的gpg,并重新安装整个gpg套件。