我刚开始使用git,我通过自制软件安装git和gpg。 由于某种原因,当我提交git时,我得到了这个错误 我看了很多关于这个话题的stackoverflow问题,但没有一个对我有用。 如何修复此错误以成功上传?

error: gpg failed to sign the data
fatal: failed to write commit object

当前回答

在我的例子中,我混合了提交签名文档中给出的gpg配置和smimesign配置:https://help.github.com/en/github/authenticating-to-github/telling-git-about-your-signing-key

在工作了几个小时之后,我发现纠正它的最好方法是取消与gpg相关的所有内容,并重新配置gpg。

正如在@Jason Thrasher的回答中提到的,使用以下方法找到所有与gpg相关的git配置:

git config -l | grep gpg

然后取消所有的golable以及本地使用:

git config --global --unset <config_name>
git config --local --unset <config_name>

然后按照上面给出的官方文档重新配置。 希望这能有所帮助。

其他回答

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。

如果你使用的是windows powershell(5.1+),我想这个命令可以工作。

使用此命令获取GPG程序路径。

(Get-Command gpg).Path

在获取路径之后,复制路径。 使用这个命令

git config gpg.program <your path>

试着做出承诺。 编码快乐! !

检查你的钥匙是否过期。一旦你修复了过期日期(不需要创建一个新的密钥,除非你想),git将正常工作。

修复过期密钥的一种方法:

(注:$表示命令行提示符,在提示符后输入命令;每个命令后按Enter键)

$ gpg2—list-keys查找合适的密钥id (pub行\后的字符)

$ gpg2——edit-key <key id> -打开GPG shell,提示符更改为GPG >

Gpg > expire -按照指示设置主键的新过期日期

接下来,如果有子键过期(子键显示在行中),也重置它们的过期日期:

Gpg > key 1 -选择第一个子密钥 Gpg > expire -按照指示为子密钥设置新的过期日期

根据需要,对每个后续子键重复此操作。

什么是gpg: GNU Privacy Guard

用法:

GPG是确保双方安全通信的一种极好的方法。它允许敏感信息在不安全的网络上轻松共享。

简单的解决方案:

步骤1:检查密钥是否过期请做

gpg -K——keyid-format SHORT

步骤2:如果它没有过期

Git配置——global user.signingkey

我在macos上出现了这个错误-为了尝试和排除故障,我尝试使用gpg2—list-keys列出密钥,看看它们是否已经过期-我验证了密钥没有过期,并且使用git config—global user.signingkey在我的配置中设置了正确的密钥。

在我运行这些命令之后,我突然能够再次毫无问题地进行签名提交。我没有改变我的配置文件或密钥-我甚至没有创建一个新的终端实例。我的mac上的gpg2似乎处于一种奇怪的状态。