如何给你的 Git 提交进行签名

最近计划给一个开源软件,做一些英译中的翻译,看了他的 Readme 之后,发现他们需要贡献者的提交是被 verify 的。也就是说你的每次 git commit 都是被自己签名过的提交它们才会接受,在这个需求下,因此看下了,如何给你的 git commit 配置签名

我的操作是在 Mac 电脑上,所以下面的教程适合苹果电脑,如果是 window 或者其他的Linux 系统,可以参考给出的英文链接

环境配置

(第一次用)主要的步骤如下:

安装加密工具

  1. 安装 GPG 工具用于签名。工具GPGTools下载地址,或者直接 brew install gnupg pinentry-mac.
  2. 验证是否安装成功,可以通过终端中,输入 gpgconf 查看输出信息。

生成加密的公钥和私钥

  1. 在终端中输入 gpg --full-generate-key 来生成公私钥;期间会让你输入,加密类型选择,RSA,秘钥长度选择 4096,密钥的有效期,根据自己的需求来吧,我选的是无期。
  2. 然后就是输入你的用户 id 信息,主要两部分,就是用户名邮箱,一旦设置好之后,你的使用的用户名和邮箱是不能再配更改的,属于强绑定关系。这里建议,用户名根据你的自己的使用习惯,但是邮箱一定要设置成GitHub 提供的 noreply emai(不要使用自己的私人邮箱)。在你的 GitHub 邮箱页面 中会显示,类似于 **261025+<username>@users.noreply.github.com 这种。
  3. 然后就是输入一个安全短语,这个根据自己需要,我输入的是空字符;
  4. 生成和确认之后,可以通过 gpg --list-keys 来查看秘钥列表。

输出的结果秘钥的 Key 大概长这样:

pub   rsa4096 2022-01-05 [SC]
      CBA9C7B9F5F8122345943134FB39B4DB3EE146023
uid                      <user.name> <[email protected]>
sub   rsa4096 2022-01-05 [E]

复制代码

其中密钥的 Key 就是 CBA9C7B9F5F8122345943134FB39B4DB3EE146023。

如果你之前已经生成好了秘钥,希望重新导入,可以使用 gpg --import <path to your private gpg.key> 来导入。

开启你的 Commit 签名

配置好前面的之后,你需要做的就是将公钥上传到 Github,并且本地开启 commit 签名功能。

  1. 你需要将你的公钥给复制到 Github 上的秘钥管理页面,提交上你前面生成的秘钥对的公钥;用如下命令,查看你的公钥,并且复制到剪切板中

    gpg --armor --export CBA9C7B9F5F8122345943134FB39B4DB3EE146023 | pbcopy
    
    复制代码
  2. 秘钥管理页面上新增上面的内容

  3. 本地的 git 用户名和邮箱必须修改成同前面配置一致,不然会抛出错误,且无法 commit。

    error: gpg failed to sign the data
    fatal: failed to write commit object
    
    复制代码
  4. 本地 git 配置加密 key 和是否自动开启 commit 签名。

    git config --global user.signingkey CBA9C7B9F5F8122345943134FB39B4DB3EE146023 
    git config --global commit.gpgsign true                                                                                                                                                          
    
    复制代码

如果只是轻量级的使用 commit 签名功能,可以通过每次 commit 前,增加 -S 来实现对单次 commit 的提交签名。例如,git commit -m "Test GPG" -S

Guess you like

Origin juejin.im/post/7049741024112934920