Github使用GPG对Commit进行签名
如何使用GPG对Commit进行签名,并配置Github。
概述
使用GPG,可以在本地对提交进行签名。这些提交在GitHub上标示为已验证,便于其他人信任更改来自可信的来源,如下图,在Github中可看到Verified标记。

配置步骤
安装 GPG
macOS可使用homebrew 进行安装
|
|
注意
下述步骤基于gpg (GnuPG) 2.4.5;
生成GPG密钥对
|
|
该命令会提示指定密钥类型、密钥大小、密钥有效时长,默认值即可。命令结果示例如下
|
|
其中39395E89396199AD即为私钥,1823F843E3B49C5F即为公钥。
|
|
再运行该命令即可看到以-----BEGIN PGP PUBLIC KEY BLOCK-----开头、以-----END PGP PUBLIC KEY BLOCK-----结尾的一段内容。
注意
要求你输入电子邮件地址时,请确保输入 GitHub 帐户的经过验证的电子邮件地址。
检查现有GPG密钥
|
|
该命令列出你拥有其公钥和私钥的长形式GPG密钥。
Github中添加GPG密钥
在GitHub任意页的右上角,单击个人资料照片,然后单击Settings进入设置

在SSH and GPK keys设置中点击New GPG key

Title自定义取个名字,将gpg --armor --export <私钥id>的内容复制到Key中,保存。
将签名密钥告知 Git
|
|
若要将Git配置为默认对所有提交进行签名,请输入以下命令:
|
|
如没有配置该项,在git commit -S也可对提交进行签名
其他
删除GPG密钥对
|
|
先删除了私钥,才能删除公钥
修改GPG密码
|
|
执行上述命令进入GPG命令行。在GPG命令行执行passwd命令可修改密码。
报错
error: gpg failed to sign the data:
gpg: signing failed: Inappropriate ioctl for device
直接在命令行或在终端配置文件(如.zshrc)中设置变量GPG_TTY
|
|
重要
如果使用了zsh的powerlevel10k主题,在zsh配置文件中export GPG_TTY=$(tty)可能会失效,打开终端输出GPG_TTY变量可能是not a tty。需要改成export GPG_TTY=$TTY,详见not a tty when loading terminal with powerlevel10k #524