Git

gpg 未能簽署數據,未能寫入送出對象

  • March 5, 2022

我已經搜尋了整個宇宙這個錯誤,但我找不到任何有用的提示。

我使用 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 <73314940+kgnfth@users.noreply.github.com>
ssb   rsa4096/15BBF8A123C4AC1B 2021-03-06 [E] [expires: 2037-03-02]

我的.gitconfig is this

[user]
       signingkey = 7E8*******60B47B
       email = 73314940+kgnfth@users.noreply.github.com
       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 但出現相同的錯誤

我不知道我需要你的幫助

謝謝你。

我通過將 gpg-agent 外掛添加到我的 zshrc 配置文件中解決了我的問題。

正如接受的答案所提到的,將 gpg-agent 添加到 zsh 外掛可以解決問題。後來我發現導出 gpg tty 足以讓它正常工作。

將以下行添加到 .zshrc 或 .zprofile(首選)

export GPG_TTY=$TTY

有關更多詳細資訊,gpg 似乎將 pin-entry 過程輸出到其他一些外部源,而不是目前正在使用的終端。TTY將 ref 保存到目前終端,因此將其導出為GPG_TTY解決了這種情況下的問題。

引用自:https://unix.stackexchange.com/questions/637832