我已经搜索了整个宇宙这个错误,但我找不到任何有用的提示。
我已经使用 keybase 创建了一个密钥并将我的公钥添加到 github gpg
我的gpg --list-secret-keys --keyid-format LONG
是这个
--------------------------------
sec rsa4096/7E8*******60B47B 2021-03-06 [SC] [expires: 2037-03-02]
51FBCD0E******************014D4860B47B
uid [ultimate] Fatih <********@live.be>
uid [ultimate] Fatih <[email protected]>
ssb rsa4096/15BBF8A123C4AC1B 2021-03-06 [E] [expires: 2037-03-02]
我的.gitconfig is this
[user]
signingkey = 7E8*******60B47B
email = [email protected]
name = kgnfth
[commit]
gpgsign = true
[gpg]
program = gpg
我添加export GPG_TTY=$(tty)
到我的 .zshrc 文件中
每次我运行 git commit -m "first commit" 时,我都会收到此错误
error: gpg failed to sign the data
fatal: failed to write commit object
我没有发现签名密钥有任何问题我也尝试将 gpg 更改为 gpg2 但出现相同的错误
我不知道我需要你的帮助
谢谢。
答案1
正如已接受的答案所述,将 gpg-agent 添加到 zsh 插件可以解决问题。后来我发现导出GPG_TTY
就足以使其发挥作用。
将以下行添加到 .zshrc 或 .zprofile(首选)
export GPG_TTY=$TTY
对于额外的细节,gpg 似乎将 pin 输入过程输出到其他外部源,而不是当前使用的终端。电传打字机将引用保存到当前终端,从而将其导出为GPG_TTY解决了这种情况下的问题。
答案2
我通过将 gpg-agent 插件添加到我的 zshrc 配置文件中解决了我的问题。