Git 中的提交签名(下)

268 阅读4分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第18天,点击查看活动详情

如何导出你的密钥

接下来,你需要获取新生成的密钥的标识符,以便我们在导出密钥和配置 Git 时参考它。

GPG 密钥可以通过多种方式引用。使用和共享完整指纹是一个很好的习惯,可以将用户从密钥服务器请求时产生歧义的风险降到最低。长(64 位)ID 目前还可以 但最好避免使用短(32 位)ID,因为它很容易产生冲突。(更多信息

我们将使用完整的 GPG 指纹,我们可以通过以下命令获得:

gpg --list-keys
复制代码

你将获得如下输出:

pub   rsa4096 2021-05-23 [SC]
      C6656513A0F9B7B7F4E76389EF39187D04795745
uid           [ultimate] Seth Falco <seth@example.org>
sub   rsa4096 2021-05-23 [E]
复制代码

对我来说,是C6656513A0F9B7B7F4E76389EF39187D04795745。执行其余命令时,请确保使用你的指纹而不是我的指纹。

你需要导出公钥,以便将其上传到 GitHub。我们使用--armor参数表示我们希望以ASCII 装甲格式而不是二进制格式导出它。这会将公钥写入名为gpg-key.pub.

gpg --export --armor C6656513A0F9B7B7F4E76389EF39187D04795745 > ./gpg-key.pub
复制代码

如何备份你的密钥

对 GPG 密钥进行远程备份是值得的,因为你可能会跨服务使用它们。如果你丢失了它,则必须更新所有内容会很痛苦。

你可以以与我们导出公钥相同的方式导出你的私钥,这会将私钥写入名为的文件gpg-key.asc

gpg --export-secret-keys --armor C6656513A0F9B7B7F4E76389EF39187D04795745 > ./gpg-key.asc
复制代码

你现在可以备份你的公钥和私钥,但请记住,你永远不应该将私钥的未加密副本发送到云。始终使用端到端加密云存储或Bitwarden等密码管理器来备份敏感数据。

如何启用提交签名

然后要启用对所有提交的签名,请commit.gpgsign使用  git config. 默认情况下,这将进行git commit签名提交。

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

如果你有多个 GPG 密钥,或者只是为了将来参考,你可能也需要设置user.signingkey。这将明确指出 Git 应该使用哪个密钥进行签名以避免歧义。

git config --global user.signingkey C6656513A0F9B7B7F4E76389EF39187D04795745
复制代码

如何使用你的密钥

最后,你必须上传你的公钥。你可以为 GitHub 和 GitLab 或任何其他 Git 提供程序使用相同的 GPG 密钥。

我们将需要导出的公钥来执行以下步骤,因此请gpg-key.pub在任何编辑器(如 Visual Studio Code)中打开文件,然后将内容复制到剪贴板。

在 GitHub 上,你可以转到“ SSH 和 GPG 密钥”下的设置,然后单击“新建 GPG 密钥”。将 的内容粘贴到 GitHub 上的 Key 字段中,然后单击“添加 GPG 密钥”。gpg-key.pub

在 GitHub 设置中添加 GPG 密钥。

在 GitLab 上,步骤几乎相同,只需转到你的首选项,然后是“ GPG 密钥”。将 的内容粘贴gpg-key.pub到 GitLab 上的 Key 字段中,然后单击“Add key”。

现在你可以对你的存储库进行签名提交了!下一次提交将提示你输入 GPG 密钥密码,因为这是第一次使用它。后续提交将是无缝的。

如何在 Git 中验证提交

GitHub 和 GitLab 将在你的新提交旁边显示“已验证”徽章。

GitHub 上的签名提交,它在侧面显示一个经过验证的徽章。

GitLab 上的签名提交,它在侧面显示了经过验证的徽章。

最后要记住的是,提交签名只会验证提交者,而不是作者。这意味着当你看到已验证的提交时,作者与已验证的状态无关。

带有经过验证的徽章的签名提交,但 Jen 没有创作此提交。

结论

感谢你的阅读!