【问题标题】:gpg "failed to write commit object"gpg“未能写入提交对象”
【发布时间】:2019-03-07 06:47:57
【问题描述】:

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

git commit -S -am "Test"

错误是:

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

我尝试了什么:

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

我研究并尝试了所有选项的问题:

我做错了什么?

【问题讨论】:

  • 如果你希望在你的 repo 中添加到 repo 而不是 init git-crypt,你需要让已经有权访问加密文件的人将你的公钥添加到 @987654330 @部分回购
  • 感谢@mewc,但事实并非如此,请参阅下面我自己的答案
  • 酷,对下一个人来说更像是一个参考。不觉得它应该得到自己的答案。

标签: macos code-signing gnupg


【解决方案1】:

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

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

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

【讨论】:

  • 谢谢,它为我节省了很多时间!
  • 但是为什么需要这个?
  • 这行得通,但为什么必须这样做?这是一个错误吗?
  • 谢谢!这帮助我找出了真正的问题:我的终端窗口太小而无法呈现密码提示。似乎git 有时会隐藏错误信息以防止出现。
【解决方案2】:

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

列出所有键:

gpg --list-keys

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

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

【讨论】:

    【解决方案3】:

    呵呵,当然,我刚发完这个问题,就找到了解决办法。

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

    并设置GPGsmimesign,当我有 Git

    所以我刚刚从全局~/.gitconfig 中删除了带有smimesign 的部分

    【讨论】:

    • 提交时无法在指定键中找到用户ID的确切解决方案
    【解决方案4】:

    试试echo "foobar" | gpg --clearsign。它应该询问您的密钥密码并返回签名。 相反,如果您看到以下错误消息:

    错误:gpg 未能签署数据
    致命:无法写入提交对象

    您可能想尝试运行export GPG_TTY=$(tty)。如果再次测试后提示您输入密码并且它可以工作,则每次启动时运行此命令,将其添加到 ~/.bashrc,这实际上是根据 gpg-agent 的文档所必需的,如 this dev.gnupg thread 中所述,您可以验证man gpg-agent

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

    【讨论】:

      猜你喜欢
      • 2017-01-22
      • 2021-07-18
      • 1970-01-01
      • 2021-05-12
      • 2015-03-14
      • 2019-10-21
      • 2016-10-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多