Git提交报错:GPG签名失败及路径问题求助
GPG签名提交失败的解决方案(Windows环境)
问题现象
- 安装GPG后向GitHub提交代码报错,卸载Kleopatra后,Windows命令提示符(CMD)无法识别GPG路径,但Git Bash可以正常识别
- 使用GitHub Desktop和Git Bash提交代码时,均触发以下错误:
error: cannot spawn C:\Program: No such file or directory error: gpg failed to sign the data fatal: failed to write commit object
解决方案
1. 修复Git的GPG路径配置(核心问题:路径空格未转义)
错误里的C:\Program是路径被截断导致的——GPG默认安装在C:\Program Files目录下,路径含空格,Git配置时没正确处理就会触发这个问题。
在Git Bash里执行以下命令,重新指定GPG路径(二选一即可):
# 用引号包裹带空格的路径 git config --global gpg.program "\"C:\Program Files\GnuPG\bin\gpg.exe\""
或者用斜杠替换反斜杠(Git更兼容这种写法):
git config --global gpg.program "C:/Program Files/GnuPG/bin/gpg.exe"
执行完后验证配置:
git config --global --get gpg.program
输出应该是完整的GPG可执行文件路径,没有截断。
2. 把GPG路径加入系统环境变量(解决CMD识别问题)
- 右键「此电脑」→「属性」→「高级系统设置」→「环境变量」
- 在「系统变量」里找到
Path,点击「编辑」,添加C:\Program Files\GnuPG\bin(如果你的GPG安装在其他路径,替换成实际路径) - 重启CMD和所有Git相关程序(包括GitHub Desktop),然后在CMD里输入
gpg --version,能正常输出版本信息就说明配置成功。
3. 确认GPG密钥配置正确
- 在Git Bash里执行:
检查是否有可用的私钥,如果没有,执行gpg --list-secret-keys --keyid-format=longgpg --full-generate-key生成新密钥。 - 把公钥添加到GitHub:执行
gpg --armor --export <你的密钥ID>,复制输出的公钥内容,粘贴到GitHub账户的「Settings」→「SSH and GPG keys」页面。
4. 配置Git自动签名提交(可选)
如果想让所有提交都自动签名,在Git Bash里执行:
git config --global commit.gpgsign true
内容的提问来源于stack exchange,提问作者Kelvin Obidozie
相关产品推荐
相关产品推荐

