git 使用 gpg 密钥提交在 VSCode 中不起作用

git commit with gpg key does not work from VSCode

添加了一个 gpg 密钥来签署提交。

完成所有配置后,我可以通过 git cli 进行签名。

但是当我使用 vscode 提交时,它会打开一个终端 window,这样我就可以输入我的密钥密码。 window 出现了一些错误,不接受密码和 returns vscode 中的错误:

error: gpg failed to sign the data

当我重新启动 gpg-agent 并设法通过 cli 提交时。

当我通过 cli 输入密码时,它存储在终端的那个部分,我设法通过 vscode 提交。当您关闭该部分时,错误 returns.

我在 linux Ubuntu 20

中使用 wsl2

我猜你的问题是:

  • 您从未启动 gpg-agent 的环境中启动 VSCode,因此 VSCode 无法访问指示如何访问 gpg-agent 的环境变量
  • 当您从 VSCode 中打开的终端启动 gpg-agent 时,它会更新 该终端 的环境(每个终端都是一个单独的进程)但不会对于 IDE 或其他终端

要确认正确的环境是否有效,您可以尝试以下操作:

  • 关闭 VSCode
  • 的所有 运行 个实例
  • 打开一个新终端(无论您使用什么 shell:bash、电源shell、cmd.exe ...)
  • 从那个终端,启动你的 gpg-agent
  • 从同一个终端,从命令行VSCode启动
  • 检查从 VSCode
  • 实例提交时是否仍有问题

您可以在启动 gpg-agent 之前和之后检查环境以确认变量确实得到更新(在 bash 中,这仅表示 运行 envenv | sort 从命令行)。

我找到了解决方案...

所需步骤:

https://www.gpg4win.org 安装 GPG4Win。除了默认的 gnupg 之外,不需要其他任何东西,但我也安装了 Kleopatra,以防它在其他地方派上用场。

编辑 ~/.gnupg/gpg-agent.conf 并更改 pinentry

pinentry-program "/mnt/c/Program 文件 (x86)/GnuPG/bin/pinentry-basic.exe"