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
我尝试了什么:
gpg
工作正常(见下文),没有安装 gpg1
或 gpg2
- 安装了 GPG KeyChain 并添加了一个新密钥(甚至添加了一个单独的仅签名子密钥)
- 已安装
pinentry
gpg2 --clearsign
工作正常(为文件生成一个新的 .asc 文件,为纯文本输出文本)
我调查并尝试了每个选项的问题:
我做错了什么?
呵呵,当然,在我发布这个问题后,我找到了解决方案。
所以我的问题是我遵循了这个文档:https://help.github.com/en/articles/telling-git-about-your-signing-key
并设置 GPG
和 smimesign
,当我有 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 非常有用。
我正在尝试在 OS X Mojave 上启用提交签名。
git commit -S -am "Test"
错误是:
error: gpg failed to sign the data
fatal: failed to write commit object
我尝试了什么:
gpg
工作正常(见下文),没有安装gpg1
或gpg2
- 安装了 GPG KeyChain 并添加了一个新密钥(甚至添加了一个单独的仅签名子密钥)
- 已安装
pinentry
gpg2 --clearsign
工作正常(为文件生成一个新的 .asc 文件,为纯文本输出文本)
我调查并尝试了每个选项的问题:
我做错了什么?
呵呵,当然,在我发布这个问题后,我找到了解决方案。
所以我的问题是我遵循了这个文档:https://help.github.com/en/articles/telling-git-about-your-signing-key
并设置 GPG
和 smimesign
,当我有 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 非常有用。