【问题标题】:git commit - gpg failed to sign the data, but works from consolegit commit - gpg 未能签署数据,但可以从控制台工作
【发布时间】:2021-10-25 11:38:51
【问题描述】:

我知道有很多类似的问题,但基本上,git commit 给了我

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

但是,感谢this answer,我可以先在命令行中通过 gpg 签署随机文件来签署提交。这行得通,但它很烦人。为什么我必须这样做?

我正在使用 Manjaro KDE。

【问题讨论】:

  • 当您进行命令行文件签名时,您是否必须将密码/密码短语提供给 GPG 代理,然后该代理会等待一段时间才能签署提交而无需先获得密码/密码?如果是这样,请考虑让代理执行相同的预加载,而无需签署文件。这仍然很烦人,所以see the documentation
  • @torek 是的,密码已保存,因为我可以在终端中输入它,但是当我让 VSCode 或 Intellij Idea 提交并执行操作时,如果密码不是“临时保存”它确实那个错误。我不明白你想让我对文档做什么。
  • 可能您可以将 GPG_TTY 设置为指向可以输入密码的终端。我会翻阅文档,看看是否有一些解决方法。

标签: git gnupg archlinux kde


【解决方案1】:

感谢Alvin Tang 为我提供了如此简单的解决方案!

我只需要添加这两行:

GPG_TTY=$(tty)
export GPG_TTY

位于文件底部~/.bashrc

【讨论】:

    【解决方案2】:

    您可能希望为 Git 指定 GPG 程序

    git config --global gpg.program gpg2
    

    并为所有提交启用签名(否则,将 -s 添加到每个 Git 命令)

    git config --global commit.gpgsign true
    

    使用gpg --list-keys 查找您的密钥并指定此密钥在 Git 中的用途:

    git config --global user.signingkey <Your GPG Key>
    

    GPG 会在你执行git commit 时询问密码。

    参考:https://git-scm.com/book/en/v2/Git-Tools-Signing-Your-Work

    【讨论】:

    • 您是否也将GPG_TTY=$(tty)export GPG_TTY 添加到.bashrc?您不妨参考this answer
    猜你喜欢
    • 2017-04-24
    • 2017-05-21
    • 1970-01-01
    • 2017-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-11
    相关资源
    最近更新 更多