在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的执行过程,我发现其卡死在了这个命令的执行上:
|
|
具体是什么原因我并未做深究。