*本文仅作个人笔记

目的

使用 GPG 或 S/MIME 可在本地签名标记并提交。 这些标记或提交在 GitHub 上标示为已验证,便于其他人信任更改来自可信的来源。[1]

配置过程

安装 GPG

brew install gpg

检查现有的 GPG 秘钥

gpg --list-secret-keys --keyid-format LONG

如果无返回值,则说明没有配置 GPG 秘钥;如果有,则可以跳过生成 GPG 秘钥对的步骤。

生成 GPG 密钥对

gpg --full-generate-key

导出公钥

获取已生成密钥列表:

gpg --list-secret-keys --keyid-format LONG

输出样例:

$ gpg --list-secret-keys --keyid-format LONG
/Users/hubot/.gnupg/secring.gpg
------------------------------------
sec   4096R/3AA5C34371567BD2 2016-03-10 [expires: 2017-03-10]
uid                          Hubot 
ssb   4096R/42B317FD4BA89E7A 2016-03-10

记录 GPG Key ID,样例中为 3AA5C34371567BD2

导出公钥:

gpg --armor --export 3AA5C34371567BD2

// 注意替换为上一步中获得的 GPG Key ID

复制导出的公钥并粘贴到 GitHub 添加 GPG 密钥的页面上[2]

设置 Git

配置 gpg-agent 环境变量[3]
echo 'export GPG_TTY=$(tty)' >> ~/.profile	#for bash users

echo 'export GPG_TTY=$(tty)' >> ~/.zshrc	#for zsh users


source ~/.profile	#for bash users

source ~/.zshrc		#for zsh users
设置 Git 使用 GPG 签名
git config --global user.signingkey 3AA5C34371567BD2

git config --global commit.gpgsign true

// 注意替换为上面获得的 GPG Key ID

对于不需要 GPG 签名的 Git 仓库,只需要在其目录下执行以下设置:

git config commit.gpgsign false

↩︎ 注

  1. 管理提交签名验证 - GitHub 帮助

  2. 参见 新增 GPG 密钥到 GitHub 帐户 - GitHub 帮助

  3. 参见 将您的签名密钥告知 Git - GitHub 帮助