一个没啥用的奇怪的 Git 技能 —— 给你的 Commit 加上 Verified 已认证
问题
先来看一张图,这是怎么回事呢?

这图不是 P 的,不信点击 Github 进去看看。原理如下代码和注释说明:
1 | $ git clone git@github.com:jsbugwang/cloudflare-workers-short-url.git && cd cloudflare-workers-short-url |
如何解决呢
答案是 Github/Gitlab 都支持给提交签名认证的功能。官网非常完善:Sign commits with GPG 。下面是我的操作步骤,和官网一样的,我的多了一些有点用的 ⚠️ 注意事项和最后效果对比图。
操作步骤
1. Create a GPG key (生成 GPG key)
1 | $ gpg --full-gen-key |
输入姓名(Real name)、email,操作系统弹框提示输入 passphrase ,完成。
⚠️:passphrase 务必记住,首次 commit 时会弹框输入。
⚠️:email 必须和 Github/Gitlab 账号一致。 否则显示
Unverified: No user is associated with the committer email.如图:

2. Add a GPG key to your account (给 Github/Gitlab 账号添加 GPG key)
获取公钥:
1 | $ gpg --list-secret-keys --keyid-format LONG <EMAIL> # 查看到第一行 sec rsa3072/ 后面的 16 位就是 key ID |
把得到的公钥添加到 settings → GPG Keys
⚠️:注意,添加到 Github/Gitlab 后检查下,应该显示绿色的 Verified ,说明 GPG key 的 email 和 Github/Gitlab 账号匹配上了!
3. Associate your GPG key with Git (给本地 Git 关联 GPG key)
设置:
1 | $ git config user.signingkey <ID> |
⚠️:注意,如果你只有一个 Git 账号,可以 cofig –global 。我因为有多个,所以在项目中设置。
4. Sign your Git commits (用 GPG key 提交代码)
有 2 种方式:
git commit -S -m "My commit message"单次提交git config --global commit.gpgsign true每次提交
最后验收如图:
冒充不了啦,点击这里看。

Further Reading
什么是 GPG 呢?参考 GPG入门教程 - 阮一峰
1991年,程序员Phil Zimmermann为了避开政府监视,开发了加密软件PGP。这个软件非常好用,迅速流传开来,成了许多程序员的必备工具。但是,它是商业软件,不能自由使用。所以,自由软件基金会决定,开发一个PGP的替代品,取名为GnuPG。这就是GPG的由来。
简单说就是加密软件。