不知道你遇没遇到过,几个月内我遇到过两次了,记之。
【错误详情】
在提交代码时,报以下错误:
shell error: gpg failed to sign the data fatal: failed to write commit object error: could not commit staged changes.
或者
html error: gpg failed to sign the data: [GNUPG:] KEY_CONSIDERED 7037C263402DC726F76CCFEA2039AF6CB6A4FC65 2 [GNUPG:] BEGIN_SIGNING H10 [GNUPG:] PINENTRY_LAUNCHED 39545 curses 1.2.1 - xterm-256color - - 502/20 0 gpg: signing failed: Inappropriate ioctl for device [GNUPG:] FAILURE sign 83918950 gpg: signing failed: Inappropriate ioctl for device
在 Mac 上,GPG 代理似乎不是很稳定,感觉有什么其他的程序会不时杀死 GPG 代理,导致了这个问题。
【解决办法】
执行以下命令后,重试 git 提交即可:
shell export GPG_TTY=$(tty)
两次遇到这个问题,两次使用这个方法,屡试不爽。
【tty 详情】
echo 一下可以看到如下信息
shell echo $(tty) /dev/ttys014
【温馨提示】
GPG 的密码还是记住的,不然,签署时仍然会碰到问题。因为执行了以上命令后,相当于重启了 GPG 代理,它会向你询问密码。