GPG未能为git提交对数据进行签名.但它在先签署本地文件后工作



这是一个非常奇怪的行为。我正在使用gpg (GnuPG) 2.2.19,并且我正在尝试签署一个git提交。我第一次尝试时收到一个错误,上面写着:

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

但后来有人在另一个Stack Overflow问题中建议,如果你先签署一个本地伪文件,然后再次尝试签署提交,那就可以了。确实如此!但为什么呢?每次我想签署git提交时,如何避免先签署本地文件这一奇怪的事情?

我在Windows11上使用WSL,所以所有这些都发生在WSL中。

好的,我不知道这是否能为每个人解决问题,原始问题中的注释提供了一些其他不适合我的解决方案。但我确实在本指南的本节中找到了一个解决方案配置pinentry以使用正确的TTY

这是一个问题,我必须指定正确的TTY,如本gpg代理文档中所述

因此,为了实现这一点,我在~/.bashrc中添加了以下内容(在使用ohmyzsh时,在我的情况下为~/.zshrc(:

# update tty for gpg-agent
export SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket)
unset SSH_AGENT_PID
export GPG_TTY=$(tty)
gpgconf --launch gpg-agent

最新更新