Git提交使用GPG签名
GPG(GNU Privacy Guard)是一种遵循OpenPGP标准的开源加密软件。我们可以用于加密内容,可以使用到文件、邮件等地方进行加密,加密后的内容,除非拥有私钥不然谁也无法解密得知邮件中的内容。
在使用 git commit 时,我们可以使用GPG签名提交,以确保提交的作者身份和提交的内容不会被窜改。
等等…Git提交是如何伪造提交的。其实在使用Git前我们都配置了用户名与邮箱,这个邮箱我们可以选择一位倒霉朋友装成自己。
git config --global user.name "Your Name"git config --global user.email "youremail@yourdomain.com"可以选择自安装gpg程序,也可以使用Git自带的gpg程序。如何选择就看你是否想要自己管理gpg密钥。
如何选择看:
- gpg4win:使用gpg4win可以用Gui界面方式操作,但需要自己安装和多一些配置步骤。
- git:开发者自带且不用多一步配置,缺点是无界面
密钥换电脑时会有需要备份或修改密钥中用户信息,已经gpg密钥支持增加子密钥多台电脑中使用,深入使用带有Gui程序会减少心智负担。不想深入使用什么配置都不配就好。
下载地址: Gpg4win - Get Gpg4win ![]()
安装时请选择Kleopatra, 我们将用kleopatra工具来管理Gpg密钥. 只安装gpg4win接下来的操作要用命令行了.

直接安装Git, 但使用时需要使用Git Bash。
1. 创建GPG密钥
Section titled “1. 创建GPG密钥”-
新建 OpenGPG 密钥对

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

-
输入保护密码(两次)

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

-
创建成功

打开Git Bash终端输入:
gpg --full-generate-key按提示步骤,选择用rsa加密算法长度4096位的密钥对(密钥自用方便可选择无有效期)
2. Git设置
Section titled “2. Git设置”-
gpg程序位置(非使用Git Bash自带gpg程序时必须)
因git bash自带gpg加密程序,git提交时默认使用自己的gpg加密,我们需要修改成kleopatra附带的程序。
Terminal window # 当使用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加签
Terminal window git config --global commit.gpgsign truegit config --global tag.gpgsign truePS这一步可选,但提交前commit命令添加参数(-s)
Terminal window git commit -s -m "_commit_message_" -
添加你的Gpg Key ID
Terminal window git config --global user.signingkey <YOUR_GPG_KEY_ID>
3. GPG公钥设置
Section titled “3. GPG公钥设置”


复制出来的公钥末尾可能带有回车,需要删掉不然校验提示保存不了,密钥本身无错

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

- 认证

- 选择自己的认证方式

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

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