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

git commit提示gpg failed to sign the data但控制台手动签名正常

GPG 签名报错核心原因

你遇到的需要先手动执行GPG签名才能正常提交Git commit的问题,在Manjaro KDE环境下通常由三类配置问题导致:

  • GPG代理密码缓存未初始化:gpg-agent是负责存储GPG私钥密码的后台进程,默认首次调用或者缓存超时后,需要用户输入密码才能完成签名。Git调用GPG时处于非交互式上下文,无法唤起密码输入弹窗,会直接返回签名失败;而你手动在终端执行GPG签名时处于交互式终端环境,可以正常唤起密码输入控件,密码输入完成后会存入gpg-agent缓存,后续Git调用时就能直接读取缓存的密码完成签名。
  • Pinentry程序配置不匹配:KDE桌面环境默认需要使用Qt版本的pinentry密码输入控件,如果你的GPG配置中默认使用的是pinentry-tty等仅支持终端的密码工具,Git调用时无法在非TTY上下文唤起输入框,就会报错。
  • 会话环境变量缺失:KDE会话启动时如果没有正确初始化GPG相关的环境变量,Git进程无法找到运行中的gpg-agent进程,也会导致签名失败。手动在终端执行GPG命令时会自动启动gpg-agent并注入当前终端的环境变量,因此同终端下的后续Git命令可以正常访问代理。
永久修复方案
  1. 安装适配KDE的密码输入工具
    执行命令安装Qt版本pinentry:
    sudo pacman -S pinentry-qt

  2. 调整GPG代理配置
    编辑~/.gnupg/gpg-agent.conf文件,添加以下配置:

# 使用Qt版本密码输入框
pinentry-program /usr/bin/pinentry-qt
# 密码默认缓存1天(单位秒)
default-cache-ttl 86400
# 密码最长缓存7天(单位秒)
max-cache-ttl 604800

配置修改完成后执行以下命令重启GPG代理生效:
gpg-connect-agent reloadagent /bye

  1. 配置KDE会话自动加载GPG环境变量
    创建~/.config/plasma-workspace/env/gpg.sh文件,写入以下内容:
export GPG_TTY=$(tty)
export SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket)

给文件添加执行权限:
chmod +x ~/.config/plasma-workspace/env/gpg.sh
重启KDE会话后配置即可永久生效,无需每次开机先手动执行GPG签名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 05:54:01