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

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

我已经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 <[email protected]>"
4096-bit RSA key, ID 5826006B, created 2016-12-05

gpg: gpg-agent is not available in this session
Enter passphrase:

到底是怎么回事?

答案1

提交后发出此消息时:

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

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

gpg-connect-agent reloadagent /bye

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

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

答案2

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

当您使用Git 重击(随附gpg)并且您正在安装图形处理软件此外,后者附带了更新的版本。

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

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

% gpg --version                                                               
gpg (GnuPG) 1.4.19

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

% git config --global gpg.program gpg2

答案3

这应该可以在 Windows 11 上运行,请注意,我已经安装了 GnuPG,这首先会导致该错误(可能)。

git config --global gpg.program "C:\Program Files (x86)\GnuPG\bin\gpg.exe"

对我来说,这也修复了 git-towers 连接服务时出现的问题。

PS:在 Windows PowerShell 中为我工作

答案4

除了其他人所说的之外,您还应该检查您的.gitconfig文件。 就我而言,我只需要在可执行文件路径中添加引号: .gitconfig 文件中 gpg 部分的屏幕截图

[gpg]
# program = C:\\Program Files (x86)\\GnuPG\\bin\\gpg.exe
program = "C:\\Program Files (x86)\\GnuPG\\bin\\gpg.exe"

在重新启动后第一次尝试签署提交时,我遇到了此错误,并且能够通过终止、和进程来重现此错误gpggpg-agent显然git它最初没有捕获该设置,而是依赖于安装在上的内容C:\Program Files\Git\usr\bin

相关内容