抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

第一次能签名,第二次不行

如果出现了这样的报错:

error: gpg failed to sign the data
fatal: failed to write commit object

说明你的gpg炸了,先给git指令带上GIT_TRACE=1进入诊断模式来看看到底发生了什么:

$ GIT_TRACE=1 git commit -a -m "medsage"
21:01:50.774874 git.c:447               trace: built-in: git commit -a -m 'add sstv'
21:01:50.777920 run-command.c:671       trace: run_command: gpg2 --status-fd=2 -bsau  <key id>
error: gpg failed to sign the data
fatal: failed to write commit object

不难看出,是在执行gpg2 --status-fd=2 -bsau <key id>中出现了问题。
接下来你可以手动执行

gpg2 -bsau <key id>

如果你执行后没有任何报错而是直接卡住,那么很大几率是你缺少了GPG_TTY这个环境变量。只需要直接把执行tty时输出的结果写入GPG_TTY这个变量即可。在我使用的fish下,我是这么操作的:

echo "set -x GPG_TTY (tty)" >> ~/.config/fish/config.fish

然后重启fish后,重新commit,问题解决。

评论