能否设置SSH config配置项实现GPG提交签名自动生效?
无法直接在SSH配置的Host块中关联GPG密钥,但可以通过Git的条件配置功能实现完全一致的效果,无需为每个新建的工作仓库单独配置签名信息,操作步骤如下:
步骤1:获取工作GPG密钥ID
执行以下命令列出本地GPG私钥:
gpg --list-secret-keys --keyid-format=long
在输出中找到对应工作账号的密钥,sec行/后的字符串就是你的密钥ID。
步骤2:配置Git条件加载规则
编辑全局Git配置文件(默认路径为~/.gitconfig),在末尾添加如下配置块:
# 匹配所有使用自定义SSH Host renci的工作仓库 [includeIf "hasconfig:remote.*.url:git@renci:**/*"] path = ~/.gitconfig-work
步骤3:编写工作账号专属配置
新建~/.gitconfig-work文件,填入工作账号的签名相关配置:
[user] name = 你工作GitHub账号的公开用户名 email = 工作GitHub账号绑定的邮箱(需和GPG密钥绑定的邮箱完全一致) signingkey = 步骤1中获取的GPG密钥ID [commit] gpgsign = true # 自动为所有提交加GPG签名 [tag] gpgsign = true # 自动为所有标签加GPG签名
生效验证
配置完成后,所有远程URL使用git@renci:前缀的工作仓库,都会自动加载上述工作配置,无需单独执行仓库级配置命令。你可以进入任意工作仓库执行git config user.signingkey,如果输出你的工作GPG密钥ID即代表配置生效,后续提交都会自动带上合法GPG签名,在GitHub上显示验证标记。
如果你习惯把所有工作仓库都放在同一个根目录下(比如~/work/),也可以把步骤2中的匹配规则替换为按目录匹配,效果完全一致:
[includeIf "gitdir:~/work/"] path = ~/.gitconfig-work
内容的提问来源于stack exchange,提问作者Mason Hicks
相关产品推荐
相关产品推荐

