gpg“写入提交对象失败”

Ale*_*nik 8 macos code-signing gnupg

我正在尝试在 OS X Mojave 上启用提交签名。

git commit -S -am "Test"
Run Code Online (Sandbox Code Playgroud)

错误是:

error: gpg failed to sign the data
fatal: failed to write commit object
Run Code Online (Sandbox Code Playgroud)

我试过的:

  • gpg工作正常(见下文),没有安装gpg1gpg2
  • 安装了 GPG KeyChain 并添加了一个新密钥(甚至添加了一个单独的仅签名子密钥)
  • 已安装 pinentry
  • gpg2 --clearsign 工作正常(为文件生成一个新的 .asc 文件,为纯文本输出文本)

我调查并尝试了所有选项的问题:

我究竟做错了什么?

小智 38

我也有这个问题。我找到了一个很好的解决方案。在提交之前尝试签署文件。

$ touch a.txt
$ gpg --sign a.txt
Run Code Online (Sandbox Code Playgroud)

然后,操作系统会让您输入密码。如果这一步没问题,现在你可以通过正确签名来提交了。

  • 但为什么需要这个呢? (4认同)

小智 15

我刚刚将密钥 ID 添加到全局配置中

列出所有键:

gpg --list-keys
Run Code Online (Sandbox Code Playgroud)

选择你添加到github的那个并设置它。

git config --global user.signingkey [public key ID]
Run Code Online (Sandbox Code Playgroud)


Ale*_*nik 3

呵呵,当然,我发布这个问题后,我就找到了解决方案。

所以我的问题是我遵循了这个文档:https ://help.github.com/en/articles/telling-git-about-your-signing-key

当我的 Git < 2.19 并且没有正确的 X.509 密钥时,请设置 和GPGsmimesign

smimesign所以我只是从全局中删除了部分~/.gitconfig