为什么 git 抱怨没有 GPG 代理正在运行?

Der*_*ler 6 windows git gnupg

我有gpg-agent.exe运行,但是当我尝试时git commit,它抱怨找不到 GPG 代理:

$ gpg-agent --daemon
gpg-agent[17440]: a gpg-agent is already running - not starting a new one

$ git commit -m "foo"

You need a passphrase to unlock the secret key for
user: "Oliver Salzburg <oliver.salzburg@gmail.com>"
4096-bit RSA key, ID 5826006B, created 2016-12-05

gpg: gpg-agent is not available in this session
Enter passphrase:
Run Code Online (Sandbox Code Playgroud)

到底是怎么回事?

小智 35

当提交时发出此消息时:

gpg:无法连接到 gpg-agent:IPC 连接调用失败
gpg:keydb_search 失败:没有正在运行的代理

以下命令在 Windows 上启动 gpg-agent:

gpg-connect-agent reloadagent /bye

重新加载代理后,签名密码提示将正确显示。

环境
Windows 11 Home 21H2
git 版本 2.32.0.windows.2
gpg (GnuPG) 2.3.1
gpg-agent (GnuPG) 2.3.1

  • 这个答案完美地解决了我的问题,我有匹配的“gpg-agent”和“gpg”,但代理拒绝加载。 (2认同)

Der*_*ler 8

您的gpg-agentgpg二进制文件很可能来自不同的包。

当您使用Git Bash(附带gpg)并且另外安装GnuPG4Win时,可能会发生这种情况。后者带有更新的版本。

您可以通过检查两个程序的版本来验证这是否是您的问题

% gpg-agent --version
gpg-agent (GnuPG) 2.1.7

% gpg --version                                                               
gpg (GnuPG) 1.4.19
Run Code Online (Sandbox Code Playgroud)

如果这是您的问题,您应该告诉使用git哪个gpg二进制文件

% git config --global gpg.program gpg2
Run Code Online (Sandbox Code Playgroud)

  • 当前版本的 gpg4win 不再调用 gpg 可执行文件 `gpg2`,因此 git 现在需要可执行文件的完整路径(带有正斜杠)。 (2认同)