添加了 gpg 密钥来签署提交。
所有配置完成后,我就可以通过git cli进行签名了。
但是当我使用 vscode 提交时,它会打开一个终端窗口,以便我可以输入我的密钥密码。 窗口出现一点问题,不接受密码并在 vscode 中返回错误:
error: gpg failed to sign the data
当我重新启动 gpg-agent 并设法通过 cli 提交时。
当我通过 cli 输入密码时,它会存储在终端的该部分中,并且我设法通过 vscode 提交。当您关闭该部分时,错误将返回。
我在 Linux Ubuntu 20 上使用 wsl2
我猜你的问题是:
要确认正确的环境是否有效,您可以尝试以下操作:
您可以在启动 gpg-agent 之前和之后检查环境,以确认变量确实已更新(在 bash 中,这仅意味着从命令行运行
env
或 env | sort
)。
我找到了解决方案...
所需步骤:
从 https://www.gpg4win.org 安装 GPG4Win。除了默认的 gnupg 之外,不需要其他任何东西,但我也安装了 Kleopatra,以防它在其他地方派上用场。
编辑 ~/.gnupg/gpg-agent.conf 并更改 pinentry
pinentry-程序“/mnt/c/Program Files (x86)/GnuPG/bin/pinentry-basic.exe”
此外,当使用 gitconfig 文件启用 GPG 签名时,请确保使用创建 gpg 密钥时的长密钥,即:
[user]
email = [email protected]
name = My Name
signingkey = ########################################
[gpg]
program = gpg
[commit]
gpgsign = true
如果您遇到诸如因私钥不存在而无法签名之类的错误,这应该可以工作。
如果你想找到这些凭证,请转到 git bash 并点击
gpg --list-secret-keys --keyid-format=long
命令,该命令应该输出如下内容:
sec rsa4096/SHORT_KEY_ID yyyy-mm-dd [SC] [expires: yyyy-mm-dd]
LONG_KEY_ID
uid [ultimate] My Name (comment) <[email protected]>
ssb rsa4096/SHORT_KEY_ID yyyy-mm-dd [E] [expires: yyyy-mm-dd]
您将需要使用 LONG_KEY_ID 作为签名密钥!
希望有帮助。
签名,9662e103-129a