GPG(GNU Privacy Guard)是一种遵循OpenPGP标准的开源加密软件。我们可以用于加密内容,可以使用到文件、邮件等地方进行加密,例如加密了邮件后,除非有私钥不然谁也无法解密得知邮件中的内容。
在使用 git commit 时,项目要求使用GPG签名有以下作用:
- 防篡改
签名确保提交内容未被篡改,从提交时到验证时内容保持一致。 - 不可否认性
提交者无法否认自己的签名,因为签名与私钥绑定,私钥由提交者持有。 - 透明性
所有协作者和审核者都可以验证提交来源,提高项目透明度。
Git 会使用在全局配置中的用户名和邮箱,如果其他人使用与你相同的用户名与邮箱,实际其他人无法真正分辨两者的提交是谁。面gpg密码中带有用户信息,且只有你拥有对应的密钥时才能解密信息,就能证明该提交的作者是你
git config --global user.name "Your Name"git config --global user.email "youremail@yourdomain.com"总结:
GPG 签名在 Git 中提供了身份验证、数据完整性和不可否认性,是保障代码来源可信的有力工具。
可以选择自安装gpg程序,也可以使用Git自带的gpg程序。如何选择就看你是否想要自己管理gpg密钥。
如何选择看:
- gpg4win:使用gpg4win可以用Gui界面方式操作,但需要自己安装和多一些配置步骤。
- git:开发者自带且不用多一步配置,缺点是无界面
密钥换电脑时会有需要备份或修改密钥中用户信息,已经gpg密钥支持增加子密钥多台电脑中使用,深入使用带有Gui程序会减少心智负担。不想深入使用什么配置都不配就好。
安装方式一:Git Bash
Section titled “安装方式一:Git Bash”直接安装Git, 使用时需要使用Git Bash。
安装方式二:Gpg4win
Section titled “安装方式二:Gpg4win”安装时请选择Kleopatra, 我们将用kleopatra工具来管理Gpg密钥. 只安装gpg4win接下来的操作要用命令行了.

创建GPG密钥
Section titled “创建GPG密钥”kleopatra方式
Section titled “kleopatra方式”1
新建 OpenGPG 密钥对

填写内容
- ①:输入名字与邮件地址
- ②:使用密码句保护生成的密钥(每次使用密钥时需要输入密码,即使别人获取到密钥也得输入正确密码才能使用)
- ③:Key Material 选择加密算法,(可选可不选,我使用rsa4096的算法)
- ④:valid until取消勾选(因为自用为了方便我选择不加有效期)

3
输入保护密码(两次)

4
如密钥太过简单时会出现提示,可直接选择take this one anyway跳过(不要使用123456这样简单的密码)

5
创建成功

Git Bash方式
Section titled “Git Bash方式”打开Git Bash终端输入:
gpg --full-generate-key按提示步骤,选择用rsa加密算法长度4096位的密钥对(密钥自用方便可选择无有效期)
步骤一:gpg程序位置(非使用Git Bash自带gpg程序时必须)
Section titled “步骤一:gpg程序位置(非使用Git Bash自带gpg程序时必须)”因git bash自带gpg加密程序,git提交时默认使用自己的gpg加密,我们需要修改成kleopatra附带的程序。
# 当使用gpg4win时需此配置,使用git内置的gpg生成时不需要git config --global gpg.program <YOUR_GPG_PROGRAM>
# 例:git config --global gpg.program "C:\\Program Files (x86)\\GnuPG\\bin\\gpg.exe"gpg程序路径在默认安装时,可以在文件管理中看kleopatra的同级目录
步骤二:自动使用gpg加签
Section titled “步骤二:自动使用gpg加签”git config --global commit.gpgsign truegit config --global tag.gpgsign truePS这一步可选,但提交前commit命令添加参数(-s)
git commit -s -m "_commit_message_"步骤三:添加你的Gpg Key ID
Section titled “步骤三:添加你的Gpg Key ID”git config --global user.signingkey <YOUR_GPG_KEY_ID>不知如何获取Key ID时看
kleopatra 获取GPG_KEY_ID

命令行 获取GPG_KEY_ID
输入命令打印
gpg --list-secret-keys --keyid-format=long
GitCode GPG公钥设置
Section titled “GitCode GPG公钥设置”
复制出来的公钥末尾可能带有回车,需要删掉不然校验提示保存不了,密钥本身无错

Github GPG公钥设置
Section titled “Github GPG公钥设置”

Git提交记录会显示加签标记
Section titled “Git提交记录会显示加签标记”
Github提交记录显示
Section titled “Github提交记录显示”
Git提交记录验证其他提交者
Section titled “Git提交记录验证其他提交者”- 需要项目成员提供他的gpg公钥并导入(导入方式见:导入他人gpg公钥到kleopatra)

拥有他人公钥后验证将变为绿标。

查看绿标显示签名用户和邮箱
导入他人gpg公钥到kleopatra
Section titled “导入他人gpg公钥到kleopatra”- 需要他人提供gpg公钥并导入

- 认证

- 选择自己的认证方式
