我刚开始使用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
当前回答
对我有用的故障安全措施:重启我的机器。
这种做法很严厉,而且最终可能无法阻止问题再次出现。但我也遇到了同样的问题,尝试了几乎所有答案的解决方案,但运气不佳。
在这里添加它,希望它能解除其他人在我的情况:)
其他回答
我在升级到gnupg 2.x后遇到了这个问题。可以看到gpg2以不同的方式引用键:在~/.gitconfig中仍然有signingkey = ABC98F11 (gpg v1设置)。gpg2的键标识符较长。用gpg -list-secret-keys查找
Git需要知道它是用哪个密钥签名的。
在您设置了GPG、GPG -agent和GPG .conf文件(请参阅本指南)之后,您需要运行
git config --global user.signingKey EB11C755
显然,要用您自己的公钥替换最后的公钥。如果您希望在默认情况下对每个提交进行签名,请使用
git config --global commit.gpgsign true
$ gpg2 -K --keyid-format SHORT # <-- Shows your keys, e.g.:
/home/<username>/.gnupg/pubring.kbx
-------------------------------
sec rsa4096/0754B01E 2019-02-02 [SCA] <--secret key
C396BF3771782D7691B0641145E11B080754B01E
uid [ultimate] John Doe <user@domain.com>
ssb rsa4096/A20AB8EC 2019-02-02 [E] <--public key
sec rsa4096/25C504D5 2019-02-02 [SCA] [revoked: 2020-06-01]
08BFF49B9E07E4B4B0C4946B645B6C1425C504D5
uid [ revoked] John Doe <user2@domain.com>
uid [ revoked] [jpeg image of size 2670]
其中A20AB8EC是本例中要查找的键ID。
在我的例子中,当在一个小的tmux窗口上运行git提交时,这个错误发生了,这个窗口不能适合密码短语提示。
$ echo "test" | gpg --clearsign
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256
test
gpg: signing failed: Screen or window too small
gpg: [stdin]: clear-sign failed: Screen or window too small
你的git以某种方式配置为GPG签署每次提交。使用GPG签名不需要使用git提交或推送。它很可能会给出错误,因为您的gpg签名机制还没有配置。
如果您是git的新手,请尝试在一开始不使用GPG签名的情况下让它工作,然后在确实需要时添加签名。
你可以通过以下方法验证git是如何配置gpg的:
git config -l | grep gpg
它可以产生零或多行,包括:
commit.gpgsign=true
如果“提交。“Gpgsign”为真,则启用了GPG签名。禁用它:
git config --global --unset commit.gpgsign
然后尝试再次运行提交。现在它应该在没有gpg签名的情况下运行。在基本的git工作之后,您应该尝试将gpg签名重新添加到组合中。
什么是gpg: GNU Privacy Guard
用法:
GPG是确保双方安全通信的一种极好的方法。它允许敏感信息在不安全的网络上轻松共享。
简单的解决方案:
步骤1:检查密钥是否过期请做
gpg -K——keyid-format SHORT
步骤2:如果它没有过期
Git配置——global user.signingkey