第一次能签名,第二次不行
如果出现了这样的报错:
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,问题解决。