简介
使用 GPG 给 Commit 签名,网上已经有很多教程,但是在 Emacs 使用 Magit 作为 Git 客户端时, 还是碰到了几个问题。
Emacs 唤起 GPG Passphrase 界面异常
默认 GPG Passphrase 界面使用的是 pinentry-curses ,GUI Emacs 兼容性不好,需要使用 pinentry-mac ,
会弹出 Mac UI 的密码框:
安装
pinentry-macbrew install pinentry-mac修改
~/.gnupg/gpg-agent.conf配置默认使用pinentry-mac,加上这行:pinentry-program /usr/local/bin/pinentry-mac
无论命令行,还是 Emacs 都报错
报错内容:
error: gpg failed to sign the data fatal: failed to write commit object
解决方案,重启 gpg-agent:
killall gpg-agent && gpg-agent --daemon --pinentry-program /usr/local/bin/pinentry-mac
Magit 默认签名
Magit 现在使用 Transient 作为 UI,默认关闭了签名的配置项,需要手动打开:
c打开 commit 界面C-x l打开 Transient Suffixes 配置界面-S选中gpg-sign1输入等级,小于 4 会展示
Magit 配置页面可以通过 C-x C-s 保存当前配置,所以进入到 Commit 界面后
-S使用签名-sCommit 信息添加签名行C-x C-s保存配置