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