全程跟着 GitHub 官方指南生成、添加 gpg 的步骤,各种排查半天没发现异常,最后还是解决了
我的情况是在 Linux tmux 上面进行提交的, git commit -m "example"
提交时一直报错
error: gpg failed to sign the data
fatal: failed to write commit object
这时候你看下是不是使用的非默认 bash,或者正在使用 tmux 之类的终端复用管理工具
如果当前终端非默认 bash,比如你使用了 zshrc
,可能需要设置 GPG_TTY 环境变量来让 gpg 识别你当前所用的终端
cat <<< 'export GPG_TTY=$(tty)' >> /etc/profile && source /etc/profile
为什么要多此一举,还是因为安全原因,GPG 为了在正确的 TTY 上运行 pinentry(弹出密码输入窗口),需要知道当前的终端是什么,以便在没有图形界面的情况下安全地输入密码
在GPG 2.2.13+ 版本中,为了使 gpg 在命令行界面提示密码,应该将 export GPG_TTY=$$(tty) 添加到默认的 .bashrc 或其他 bash 的配置文件