GPG是一种加密算法,现在github支持commit使用GPG加密,从而保证提交的Commit在传输的过程中没有被篡改。
1. 生成GPG密钥
如果你还没有GPG密钥,建议参考以下步骤生成GPG密钥:
- 从这里下载GPG工具。
- 安装完成后,打开命令行,输入
gpg --full-generate-key
,按照提示输入密钥信息。(注意:确保邮箱的那项是你github账号认证的邮箱,否则后面会出现问题) - 为了后续使用方便,建议导出私钥
gpg --export-secret-keys -a "{你的邮箱}" > private.key
,并将私钥文件保存到安全的地方。 - 运行
gpg --list-secret-keys --keyid-format LONG
,查看生成的密钥信息,记住密钥的ID,后面会用到。
2. 将GPG密钥添加到Github
- 运行
gpg --armor --export {key_id}
,复制输出的内容。 - 将输出的公钥信息粘贴到Github的SSH and GPG keys
- 再次提醒,GPG密钥中个人信息的邮箱部分,必须使用在Github中验证过的邮箱,否则添加GPG key会提示未经验证。
3. 在Git中使用GPG密钥
- 在Git中配置GPG密钥,运行
git config --global user.signingkey {key_id}
。 - 然后,在每次commit的时候,加上-S参数,表示这次提交需要用GPG密钥进行签名:
git commit -S -m "..."
- 如果觉得每次都需要手动加上-S有些麻烦,可以设置Git为每次commit自动要求签名:
git config --global commit.gpgsign true
ADD BY @KanoDeer
windows terminal
中使用的 gpg 路径在你的 GunPG 安装路径里,但是 git 使用的 gpg 是它自带的那个。这导致在 terminal 中导入密钥,但在 git 提交时却提示找不到密钥,需要在 GitBash 里导入,才能在 terminal 中使用。
D:\Programs\tools\Git\usr\bin\gpg.exe # git bash 调用这个
D:\Programs\tools\GnuPG\bin\gpg.exe # windows 调用这个
如果没注意这点,在 terminal 里 git 只会报错找不到密钥
如何向GitBash里添加GPG密钥?
打开git bash,输入gpg --import private.key
,然后输入密码,即可导入密钥。
4. 结语
至此,你就可以在Git中使用GPG密钥进行签名了,大家也可以通过签名来验证提交者身份及提交的Commit是否被篡改过。当然,GPG的功能远不止这么多,更多操作有待发展。
有关Git与GPG的更多信息,可以参考这里和这里。
此文就到此结束啦!欢迎大家在评论区留言哦ヾ(^▽^*)))
Ciallo~(∠・ω< )⌒☆
写文不易,如果你觉得我的文章对你有帮助,欢迎打赏!