前置#
终端 gpg 命令正常使用
生成 GPG 密钥#
ps:要和 git config 里的邮箱一致,查看命令如下
git config --global user.email
生成密钥
gpg --full-generate-key
- 选择密钥类型:默认即可
- 选择算法:默认
- 有效期:依自己
- 这些内容正确吗:y
- 姓名
- 邮箱(注意用 git config 里的)
- 注释:依自己
- 输入密码
获取密钥信息#
gpg --list-keys
第一行开关是 pub,复制第二行的 id,在终端执行:
gpg --armor --export 复制的id
粟子:gpg --armor --export 4F113915706D141348CDC3DB5873563E6B2
执行完会获得一段有 BEGIN 开头,END 结尾的公钥,复制后去 github
将公钥粘贴进 Github#
github-> 右上角头像 ->setting->SSH and GPG keys->New GPG key
- 起个 Title
- 将复制内容粘贴进 Key 中
- Add GPG key
利用 GPG 私钥对 Git commit 签名#
获取密钥列表
gpg --list-keys
复制 id
git config --global user.signingkey 复制的id
粟子:git config --global user.signingkey 4F113915706D141348CDC3DB5873563E6B2
在每次 commit 时,加上 - S 参数即可签名
git commit -S -m "..."
也可以自动要求签名
git config --global commit.gpgsign true
信任 Github 自身的 GPG 密钥#
意义:网页端创建仓库没有显示 Verified,导致强迫症很不爽
导入 Github 自身的 GPG 密钥
curl https://github.com/web-flow.gpg | gpg --import
24 年 Github 过期了一条密钥,所以会导入两条
获取密钥列表
gpg --list-keys
复制那条 Github 没过期的公钥 id,执行签名操作
gpg --sign-key 968479A1AFF927E37D1A566BB5690EEEBB952194
输入 y 确认签名即可