You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Git提交签名GPG异常:密钥文件路径被错误前缀导致签名失败

解决Git Extensions/SourceTree提交时GPG路径错误的问题

嘿,这个问题我之前帮朋友排查过,核心原因很明确:Git配置里的GPG相关路径用了%appdata%环境变量,但GUI工具没把它解析成实际路径,反而当成字面字符串拼在了项目目录后面,所以才会出现C:/Code/XXX/%appdata%/gnupg/pubring.kbx这种完全错误的路径,自然找不到密钥文件了。

下面给你一步步解决的办法:

1. 先查清楚当前Git的GPG配置

打开Git Bash(别用GUI工具自带的终端,Git Bash能正常解析环境变量),跑这个命令看看所有和GPG、签名相关的配置:

git config --list --show-origin | grep -E "(gpg|signing)"

重点看这几个项:

  • user.signingkey:确认是不是你报错里的ZZZZZZZZZZ,别输错密钥ID
  • gpg.program:有没有指定正确的GPG程序路径
  • GNUPGHOME:如果之前设置过这个环境变量,看看是不是用了%appdata%这种变量形式

2. 把配置里的路径改成绝对路径

GUI工具不认%appdata%,所以我们直接换成实际的绝对路径就行。Windows上%appdata%对应的实际路径一般是C:\Users\你的用户名\AppData\Roaming,你可以自己去文件管理器里确认下pubring.kbx的位置。

方法一:用Git Bash一键配置

在Git Bash里执行这些命令(记得替换成你的信息):

# 指定正确的GPG程序路径
git config --global gpg.program "C:/Program Files/GnuPG/bin/gpg.exe"
# 设置你的签名密钥ID
git config --global user.signingkey ZZZZZZZZZZ
# 如果之前设置了错误的GNUPGHOME,先删掉
git config --global --unset env.GNUPGHOME
# 设置正确的绝对路径,替换成你的用户名
git config --global env.GNUPGHOME "C:/Users/你的用户名/AppData/Roaming/gnupg"

方法二:直接改.gitconfig文件

找到你用户目录下的.gitconfig文件(一般在C:\Users\你的用户名\.gitconfig),用记事本打开,修改成类似这样:

[user]
    signingkey = ZZZZZZZZZZ
[gpg]
    program = C:/Program Files/GnuPG/bin/gpg.exe
[env]
    GNUPGHOME = C:/Users/你的用户名/AppData/Roaming/gnupg

3. 验证配置是否正常

先在Git Bash里测试下GPG能不能正常签名:

echo "test" | gpg --clearsign

如果能生成带签名的文本,说明GPG配置没问题了。然后重启Git Extensions或SourceTree,再尝试提交,应该就不会报路径错误了。

额外提醒

  • 确保GUI工具用的是和Git Bash同一个Git版本:在工具的设置里找Git路径,确认指向C:\Program Files\Git\bin\git.exe
  • 如果还是不行,试试重启电脑(有时候环境变量需要重启才生效)
  • 确认你的密钥确实存在:在Git Bash里跑gpg --list-secret-keys,能看到ZZZZZZZZZZ对应的密钥就行

内容的提问来源于stack exchange,提问作者Ruskin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:43:19