Windows下Git提交签名首次尝试随机失败问题求助
解决Windows下gpg4win+Git签名时gpg-agent启动延迟/随机失败问题
一、设置gpg-agent开机自启
- 打开「任务计划程序」,点击「创建基本任务」
- 名称填
gpg-agent 开机启动,下一步后触发器选择「当我登录时」 - 操作选择「启动程序」,程序或脚本路径填
C:\Program Files (x86)\GnuPG\bin\gpg-agent.exe(64位安装路径可能为C:\Program Files\GnuPG\bin\gpg-agent.exe,请根据实际调整),添加参数--daemon --enable-ssh-support - 完成前勾选「打开此任务属性的对话框」,切换到「设置」标签,勾选「如果任务失败,每隔5分钟重试」,重试次数设为2次,避免开机时因系统资源不足导致启动失败
二、配置Git与gpg-agent的通信参数
配置环境变量:
- 若使用Git Bash,打开用户目录下的
.bashrc文件,添加以下内容:GPG_TTY=$(tty) export GPG_TTY - 若使用系统终端(CMD/PowerShell),在系统环境变量中添加
GPG_TTY,值设为当前终端的TTY路径(PowerShell可通过$tty查看,或直接填\\.\pipe\gnupg\pty1)
- 若使用Git Bash,打开用户目录下的
修改gpg-agent配置:
- 打开
%APPDATA%\gnupg目录下的gpg-agent.conf文件(无则新建),添加:default-cache-ttl 3600 max-cache-ttl 86400 pinentry-program "C:\Program Files (x86)\GnuPG\bin\pinentry-qt.exe" enable-ssh-support - 保存后执行
gpgconf --reload gpg-agent使配置生效
- 打开
三、修复IPC连接失败问题
- 更新gpg4win:卸载旧版本,安装最新版gpg4win,旧版本存在IPC通信的已知bug
- 重置gpg-agent状态:关闭所有终端和Git相关程序,打开CMD执行:
之后执行gpgconf --kill all gpg-agent --daemongpg --list-keys测试是否能正常连接 - 检查目录权限:确保
%APPDATA%\gnupg目录的读写权限属于当前用户,右键目录→「属性」→「安全」标签,确认当前用户有完全控制权限
测试验证
重启电脑后,先执行gpg --list-keys,若能快速返回密钥信息,说明agent已正常启动;再尝试Git签名提交,验证是否不再出现延迟或失败情况
内容的提问来源于stack exchange,提问作者kennytv
相关产品推荐
相关产品推荐

