问题
使用Gitub时发现有些Commit没有Verified标签,标签表示,这个Commit确实是Commiter本人所为,而没有该标签未必是本人提交的。要使Commit出现该标签可以使用GPG为Commit签名。
开始 生成GPG Key
安装Git 在Windows中打开Gitbash,Linux中打开Shell
输入 gpg --full-generate-key 并按照提示输入
最后输入O即可生成GPG密钥如下图
公钥和私钥已经生成并被签名。
pub rsa4096 2021-12-22 [SC]
41058105E2045471D6F781C9F8130DCA3246FC4A
uid yuanczx (GitHub) <yuanczx@foxmail.com>
sub rsa4096 2021-12-22 [E]
其中41058105E2045471D6F781C9F8130DCA3246FC4A为密钥ID
导出公钥
gpg --armor --export [key_id]
$ gpg --armor --export 41058105E2045471D6F781C9F8130DCA3246FC4A
-----BEGIN PGP PUBLIC KEY BLOCK-----
********************************************************************
-----END PGP PUBLIC KEY BLOCK-----
复制从-----BEGIN PGP PUBLIC KEY BLOCK-----到-----END PGP PUBLIC KEY BLOCK-----的所有内容包括BLOCK
GitHub设置
-
打开GitHub设置选择
SSH and GPG keys点击New GPG key将复制的内容粘贴并点击ADD GPG key
-
设置Git签名密钥
git config --global user.signingkey [keyi_d]然后,在每次commit的时候,加上-S参数,表示这次提交需要用GPG密钥进行签名:
git commit -S -m "..."也可以设置自动签名
git config --global commit.gpgsign true至此提交Commit便会出现Verified标签
-
导出GPG公私钥
gpg --output mygpgkey_pub.gpg --armor --export [key_id]导出公钥gpg --output mygpgkey_sec.gpg --armor --export-secret-key导出私钥 -
导入GPG密钥
gpg --import ~/mygpgkey_pub.gpg导入公钥gpg --allow-secret-key-import --import ~/mygpgkey_sec.gpg导入私钥
参考: