本来感觉流程挺简单的,但还是踩了点小坑=-=稍微记录一下
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 --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
经排查,修改本地 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 提交时会报如下错误
搜索之后看到有个17 年的博客解决了这个问题,不过没实际实践有没有效果了。前几天提交一个 Ant Design Pro 起的项目的时候,Github Desktop 的提交还被 husky 拦住了,而命令行提交仍然没问题,感觉还是借此好好督促自己用 Git 吧
参考: