gpg "failed to write commit object"

gpg "failed to write commit object"

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

git commit -S -am "Test"

错误是:

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

我尝试了什么:

我调查并尝试了每个选项的问题:

我做错了什么?

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

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

并设置 GPGsmimesign,当我有 Git < 2.19 并且没有合适的 X.509 密钥时。

所以我刚刚从全局 ~/.gitconfig

中删除了带有 smimesign 的部分

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

列出所有键:

gpg --list-keys

Select你添加到github并设置的那一个

git config --global user.signingkey [public key ID]

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

$ touch a.txt
$ gpg --sign a.txt

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

试试 echo "foobar" | gpg --clearsign。它应该要求您提供密钥的密码和 return 签名。 相反,如果您看到以下错误消息:

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

您可能想尝试 运行宁 export GPG_TTY=$(tty)。如果再次测试后系统提示您输入密码并且它有效,运行 每次启动时都会将其添加到 ~/.bashrc,根据 gpg-agent 的文档,这实际上是必需的,因为this dev.gnupg thread 中提到,您可以使用 man gpg-agent.

进行验证

我还发现 this gitHub gist 非常有用。