在macOS 11.1下测试通过。
- gpg (GnuPG) 2.2.25
- libgcrypt 1.8.7
- pinentry-mac (pinentry) 0.9.4
安装所需软件
| |
创建钥匙对
| |
这里建议使用--full-generate-key选项自定义全部选项,按照提示输入即可,加密方法选(1) RSA and RSA (default),密钥长度可选择最长4096。
其中邮箱地址需要与Github中验证通过的邮箱保持一致。
设置终端环境变量
| |
在这一步,设置GPG终端类型环境变量,目的是让GPG程序知道使用什么作为终端,并使其生效:
| |
配置GPG代理
| |
将以下内容追加进入配置文件
| |
这样,就可以使用pinentry管理GPG密钥了。
载入GPG代理配置
| |
通过杀死gpg-agent,确保配置文件被加载。
测试一下
| |
运行以上命令,对字符串test进行签名以测试gpg是否配置成功。
如果配置成功,应该会出现pinentry的窗口,选择Save in keychain可以将密码保存至钥匙链。
正确输入密码后,可以看到信息和签名。
获取密钥ID
| |
执行成功应该会出现这样的内容:
| |
使用Key ID Short或Key ID均可。
在Git中设置密钥
| |
通过以上命令可以在全局设置中配置密钥ID。
开启强制签名
通过以上步骤就可以实现GPG签名commit了,只需要添加-S选项即可,如下:
| |
但是为了方便,我们可以通过全局设置来强制开启GPG
| |
其中第一个参数是默认开启签名,第二个参数是强制开启签名。
后记
在最初的配置过程完成后,我对我的一个仓库进行commit操作出现错误,如下:
| |
通过加入GIT_TRACE=1 参数观察Git的执行过程,我发现其卡死在了这个命令的执行上:
| |
具体是什么原因我并未做深究。