Skip to main content

使用 GPG 签名提交

git 有一个身份验证层来控制谁可以向仓库推送提交,但它不对实际的提交作者进行身份验证。

换句话说,你可以以 Elon Musk <[email protected]> 的身份提交更改,将它们推送到你首选的 git 主机(例如 github.com),你的提交将链接到 Elon 的 GitHub 个人资料。(试试看!但如果 Elon 因为你冒充他而生气,不要怪我们。)

我们实施 GPG 签名的原因是:

  • 提供更细粒度的安全性,特别是随着越来越多的企业用户依赖 Hub。
  • 提供由加密安全源支持的 ML 基准测试。

有关更多上下文,请参阅 Ale Segala 的如何(以及为什么)签名 git 提交

你可以使用 GNU Privacy Guard (GPG) 和密钥服务器证明提交是由你创作的。GPG 是一种用于验证消息来源真实性的加密工具。我们将在下面解释如何在 Hugging Face 上设置此功能。

Pro Git 书籍一如既往地是关于提交签名的好资源:Pro Git:签名你的工作

设置签名提交验证

你需要安装 GPG 才能执行以下命令。

它在大多数 Linux 发行版中默认包含。 在 Windows 上,它包含在 Git Bash 中(随 Windows 的 git 一起提供)。

你可以使用 GPG 在本地签名你的提交。 然后在 Hub 上配置你的个人资料以将这些提交标记为已验证, 这样其他人就可以确信它们来自可信来源。

有关 git 和 GPG 如何交互的更深入解释,请访问关于该主题的 git 文档

提交可以具有以下签名状态:

状态说明
Verified提交已签名且签名已验证
Unverified提交已签名但无法验证签名
No signing status提交未签名

要将提交标记为已验证,你需要在 Hugging Face 账户上上传用于签名它的公钥。

使用 gpg --list-secret-keys 命令列出你同时拥有公钥和私钥的 GPG 密钥。 签名提交或标签需要私钥。

如果你没有 GPG 密钥对,或者不想使用现有密钥来签名你的提交,请转到生成新的 GPG 密钥

否则,直接转到将 GPG 密钥添加到你的账户

生成新的 GPG 密钥

要生成 GPG 密钥,请运行以下命令:

gpg --gen-key

然后 GPG 将引导你完成创建 GPG 密钥对的过程。

确保为此密钥指定电子邮件地址,并且该电子邮件地址与你 Hugging Face 账户中指定的电子邮件地址匹配。

将 GPG 密钥添加到你的账户

  1. 首先,在你的计算机上选择或生成 GPG 密钥。确保密钥的电子邮件地址与你 Hugging Face 账户中的电子邮件地址匹配,并且你的账户电子邮件已验证。

  2. 导出所选密钥的公钥部分:

gpg --armor --export <YOUR KEY ID>
  1. 然后访问你的个人资料设置页面并点击添加 GPG 密钥

在文本区域复制并粘贴 gpg --export 命令的输出,然后点击添加密钥

  1. 恭喜!🎉 你刚刚将 GPG 密钥添加到你的账户!

配置 git 使用 GPG 签名你的提交

最后一步是配置 git 以签名你的提交:

git config user.signingkey <Your GPG Key ID>
git config user.email <Your email on hf.co>

然后在 git commit 命令中添加 -S 标志以签名你的提交!

git commit -S -m "My first signed commit"

推送到 Hub 后,你应该看到带有"已验证"徽章的提交。

tip

要在计算机上的任何本地仓库中默认签名所有提交,你可以运行 git config --global commit.gpgsign true