我最近了解到签名提交,它是被推荐的。我们可以使用 git commit -S
在本地进行签名提交。此后我阅读了git手册,其中有一个选项叫做-s
(使用git commit -s
),它表示该选项会对提交进行签名。当我查询-S
时,发现它会使用 GPG 密钥进行签名。
我正在GitHub上设置使用GPG密钥进行签名提交。在推送提交时,这是否会有影响?还是远程推送时与之前相同?
我最近了解到签名提交,它是被推荐的。我们可以使用 git commit -S
在本地进行签名提交。此后我阅读了git手册,其中有一个选项叫做-s
(使用git commit -s
),它表示该选项会对提交进行签名。当我查询-S
时,发现它会使用 GPG 密钥进行签名。
我正在GitHub上设置使用GPG密钥进行签名提交。在推送提交时,这是否会有影响?还是远程推送时与之前相同?
-s/--signoff
的描述如下:
如上所述,它基本上在提交消息的末尾添加了一个 "Signed-off-by:" 行,就像这样:在提交日志消息的末尾添加由提交者签署的 Signed-off-by 行。 Signoff 的含义取决于项目,但通常表示提交者有权以相同的许可证提交此工作,并同意 Developer Certificate of Origin(有关更多信息,请参见 http://developercertificate.org/)。
$ git log
commit 172ccc467d2171b645bb55d51146af82ac36d356 (HEAD -> master)
Author: gino <my@email.com>
Date: Sun Nov 15 11:56:10 2020 +0900
Added something
Signed-off-by: gino <my@email.com>
...而 Github 不会基于签名行验证提交或显示任何 UI 指示“此提交已获批准”。这当然是违反 DCO 的目的,而签名的目的就是为了遵守 DCO。你可以使用插件/机器人来强制执行 PRs,比如这个probot/dco。
另一方面,-S/--gpg-sign
选项是一个实际的加密签名,因为它使用 您 在 您 的计算机上生成的 GPG 密钥,然后 Github 使用 您 给出的公钥来验证该提交确实来自 您(或具有您的 GPG 密钥的源)。正如 Github 签署提交文档 所述:
-S
签名并由 Github 正确验证的提交将显示 "已验证" 指示符:
请务必按照GPG提交签名验证上的步骤进行操作。Github将使用它来:
在验证签名时,我们会提取签名并尝试解析其密钥ID。我们将密钥ID与上传到GitHub的密钥进行匹配。在您将GPG密钥上传到GitHub之前,我们无法验证您的签名。
-S
(简称--gpg-sign
)使用gnupg对提交进行签名,并添加PGP签名,这是一个加密的签名,证明具有gpg密钥的所有者或能够访问该密钥的任何人正在进行该提交/标记。
-s
(简称--signoff
)将“<Signed-off-by:Username<Email>>”添加到您的提交消息末尾。任何人都可以在提交消息中放置此字符串(因此它不是作者身份的任何保证),但它已被用于维护版权。一些项目要求使用DCO“开发者原产地证书”,即开发人员已经确认他们获得了贡献代码的许可证。
-s
是--signoff
的简写) - Gino Mempin