由于Git仅靠邮箱地址判断提交者,而邮箱又可以在本地随便设置,于是这使得你可以轻易冒充其他人的提交,而使用GPG对每一个Git Commit进行签名就可以解决这一问题,通过签名,会在commit记录上标识 Verified
,它用来标记此提交确实来自你自己,而不是冒用,目前GitHub、GitLab,Gitee等都支持GPG,GPG签名使得commit更加可信,就算SSH Private Key泄露,别人也无法冒充你的身份。
打开 Git Bash
注意:在Windows版本的Git发行包中,已包含了可用的GPG命令行, 无需再下载安装额外的GPG软件,但只能在 Git Bash 下才能使用,可在 Git Bash 中执行
gpg --version
验证GPG是否已安装
生成GPG密钥之前,可以先检查当前电脑是否存在有 GPG 密钥
gpg --list-secret-keys --keyid-format LONG
由上图,可知,没有GPG秘钥,由于是首次运行此命令,所以会创建一些相关配置文件
gpg --full-generate-key
RSA and RSA
gpg --list-secret-keys --keyid-format LONG
注意:其中红框部分即为 GPG秘钥ID,接下来将用到GPG秘钥ID
gpg --armor --export <Key ID>
将 <Key ID>
替换为你的 GPG秘钥ID
以-----BEGIN PGP PUBLIC KEY BLOCK-----开头和-----END PGP PUBLIC KEY BLOCK-----结尾
粘贴刚才复制的GPG秘钥,点击 Add GPG key
即可
git config --global user.signingkey <Key ID>
<Key ID>
为GPG秘钥ID
git commit -a -S -m "update: test GPG"
命令中的 -S 即是开启GPG签名,这样每次提交的时候都要加上 -S,输入GPG的密码即可提交成功
每次都要 -S 比较麻烦,下面设置提交时默认使用GPG签名
git config --global commit.gpgsign true
查看全局 用户名和邮箱
git config --global user.name
git config --global user.email
修改全局 用户名和邮箱
git config --global user.name "用户名"
git config --global user.email "邮箱"
git log --show-signature
感谢帮助!
本文作者: yiyun
本文链接: https://moeci.com/posts/分类-github/git-gpg/
版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!