注意:如果您不想添加-S
始终确保您的提交已签署,有一个提案(分支'pu
' 目前是 2013 年 12 月,所以不能保证它会成为 git 版本)来添加一个配置来为您处理该选项。
2014 年 5 月更新:它位于 Git 2.0 中(之后被在此补丁系列中重新发送)
See 提交 2af2ef3 by 尼古拉斯·维吉尔 (boklm):
Add the commit.gpgsign
签署所有提交的选项
如果你想要 GPG 签署你的所有提交,你必须添加-S
一直有选择。
The commit.gpgsign
配置选项允许自动签署所有提交。
commit.gpgsign
一个布尔值,用于指定所有提交是否都应进行 GPG 签名。
在执行变基等操作时使用此选项可能会导致大量提交被签名。使用代理可能会很方便,以避免多次输入 GPG 密码。
该配置通常是每个存储库设置的(您不需要签署您的私有实验本地存储库):
cd /path/to/repo/needing/gpg/signature
git config commit.gpgsign true
你可以将其与user.signingKey
用作全局设置(用于您要签署提交的所有存储库的唯一密钥)
git config --global user.signingkey F2C7AB29!
^^^
As ubombi建议在评论(并在“GPG 硬件密钥和 Git 签名“, 基于 ”如何指定用户 ID")
使用 gpg 时有一个感叹号 (!
) 可以附加到强制使用指定的主键或辅助键,而不是尝试计算要使用哪个主键或辅助键。
注意Rik添加评论:
如果您使用的是 YubiKey(按照推荐)之类的东西,则无需担心感叹号,因为您应该拥有的可用于主密钥对的唯一签名密钥是:
- 主键本身,应该有一个
#
当它显示不可用后,
- 和秘密子密钥
>
之后它表明它是一个存根,指向 YubiKey 作为其小程序中唯一可用的签名密钥。
仅当您在系统上保留所有私钥时(不好的做法),那么防止在可用签名密钥之间自动选择可能是一个好主意
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
或者只是他们的钥匙圈上没有任何秘密密钥。
Notes:
- 按照惯例,自 git 2.4.0 2015 年 3 月起, it is signingKey, not signingkey,尽管
git config
键不区分大小写。只有你这样做才重要git config --get-regexp
, which is区分大小写,否则,这只是一个可读性约定;
- 如果你想要git 服务器检查每个推送的签名,您至少需要 git 2.2+(2014 年 10 月)(提交 b945901), as git push --signed未能考虑到
user.signingKey
配置值;
- git 2.9(2016 年 6 月)将使用
user.signingKey
强制签名注释tags以及承诺:提交 61c2fe0.