小编典典

有没有办法使用 GPG 密钥在 Git 中“自动签名”提交?

all

有没有一种简单的方法可以让 Git 总是对创建的每个提交或标签进行签名?

我尝试过类似的东西:

别名提交 = 提交 -S

但这并没有奏效。

我不想安装不同的程序来实现这一点。是否可以轻松实现?

只是一个附带问题,也许不应该签署提交,只有我从未创建的标签,因为我为 Homebrew 等项目提交单个提交。


阅读 109

收藏
2022-05-06

共1个答案

小编典典

注意:如果您不想一直添加-S以确保您的提交已签名,则有一个提案(分支 ‘ pu‘ 现在,2013 年 12 月,因此不能保证它会进入 git
版本)添加一个config 它将为您处理该选项。
2014 年 5 月更新:它在 Git 2.0
中(在此补丁系列中重新发送后)

请参阅Nicolas Vigier (boklm)提交
2af2ef3

添加对commit.gpgsign所有提交进行签名的选项

如果您想对所有提交进行 GPG 签名,则必须-S始终添加该选项。config 选项允许自动签署所有提交
commit.gpgsign

commit.gpgsign

一个布尔值,用于指定是否所有提交都应该是 GPG 签名的。
在执行 rebase 等操作时使用此选项可能会导致大量提交被签名。使用代理来避免多次输入您的 GPG 密码可能会很方便。


该配置通常是按 repo 设置的(您不需要签署您的私有实验性本地 repos):

cd /path/to/repo/needing/gpg/signature
git config commit.gpgsign true

您可以将其与user.signingKey用作全局设置相结合(用于您要签署提交的所有 repo 的唯一密钥)

git config --global user.signingkey F2C7AB29!
                                           ^^^

正如在评论中所建议的(并在“ GPG 硬件密钥和 Git
签名
”中解释,基于“如何指定用户
ID

”)

使用 gpg 时,可能会附加感叹号 ( !) 以强制使用指定的主键或辅助键,而不是尝试计算要使用的主键或辅助键。


user.signingKey在 git 1.5.0(2007 年 1 月)中引入并提交
d67778e

不应该要求我在我的 git 存储库和我的 gpg 密钥中使用相同形式的我的名字。
此外,我的密钥环中可能有多个密钥,并且可能想要使用与我在提交消息中使用的地址不匹配的一个。

此补丁添加了一个配置条目“ user.signingKey”,如果存在,它将传递给 gpg 的“-u”开关,从而允许覆盖标记签名密钥。

这是通过提交
aba9119

(git 1.5.3.2)
强制执行的,以捕捉如果用户user.signingKey在他们的密钥环上配置错误.git/config或只是没有任何密钥的情况。

笔记:

2022-05-06