本来感觉流程挺简单的,但还是踩了点小坑=-=稍微记录一下

verified 标签会确保该 commit 确实是本人提交。如果希望本地提交代码也有该标签,可以使用 gpg 密钥对 Github 提交进行验证。

安装 gpg

由于 windows 版本的 git 发行包已经包含可用 gpg,打开 git bash 输入gpg -v执行正常,所以此处略过

生成 GPG 密钥

在 git bash 运行gpg --gen-key治好自定义配置时的选择恐惧症,(想进行自定义密钥参数就运行gpg --full-generate-key),输入一个在 Github 中验证过的邮箱,并在跳出的框中输入一个密码,之后每次 commit 就会使用该密码确认是本人提交。

最后生成的结果将会包含如下信息,红框圈出来的部分即为你的密钥 id,对其进行复制

gpg密钥

运行gpg --armor --export {key_id},将刚刚复制的密钥 id 填入{key_id},将会生成以-----BEGIN PGP PUBLIC KEY BLOCK-----开头的对应公钥字符串。

Github 配置 GPG keys

打开Github 个人资料中的 SSH and keys,添加 GPG keys。title 填写密钥 id,Key 填写其对应的公钥字符串。

本地 Git 配置

令 Git 知道签名所用的 GPG 密钥 ID,并保证每次提交都会进行验证

git config --global user.signingkey {key_id}
git config --global commit.gpgsign true

这样每次 commit 的时候,都会先让你输入密码,确保是本人操作

遇到的一些问题

配置好之后进行提交测试,显示 unverified

本来我使用邮箱是公开在 Github 上的邮箱,但是提交测试时发现 commit 仍然被标记为 unverified

unverified

经排查,修改本地 git 保存的邮箱为配置密钥时输入的邮箱后,重新提交 commit 被标记为 verified

如果目前在 github 上对外隐藏了邮箱

可以在 github settings > emails 的 Primary email address 里看到隐藏之后会显示的 github 邮箱(xxxxx@users.noreply.github.com will be used for web-based Git operations, e.g., edits and merges.)。在生成 gpg 的时候邮箱需要填这个。用其他邮箱会显示 unverified

Github Desktop 用不了力(悲

Github Desktop 提交时会报如下错误

gpg密钥

搜索之后看到有个17 年的博客解决了这个问题,不过没实际实践有没有效果了。前几天提交一个 Ant Design Pro 起的项目的时候,Github Desktop 的提交还被 husky 拦住了,而命令行提交仍然没问题,感觉还是借此好好督促自己用 Git 吧

参考:

在 Github 上使用 GPG 的全过程

为什么我的贡献没有在我的个人资料中显示

Github Desktop & GPG issues “gpg failed to sign the data”