首页 > 解决方案 > 默认情况下,如何将 git 配置为 PGP 签署我的标签(不是我的提交)

问题描述

我目前有以下内容~/.gitconfig

[gpg]
    program = /usr/local/bin/krgpg
[commit]
    gpgSign = true
[tag]
    forceSignAnnotated = true

提交要求我使用 PGP 签名:

git commit -m "Add package.json"
Krypton ▶ Requesting git commit signature from phone

但是,我只想签署我的标签,并跳过签署提交。

问题:有什么方法可以让我配置 git 来只签署我的标签

我的意思是,缺少别名:

$ git alias.tag 'tag -s'

标签: git

解决方案


使用 Git 2.23(2019 年第三季度),您现在有了一个新的tag.gpgSign配置变量,它将“ git tag -a”变成“ git tag -s”!

请参阅Tigran Mkrtchyan ( ) 的提交 1c6b565(2019 年 6 月 5 日(由Junio C Hamano 合并 -- --提交 492d7a5中,2019 年 7 月 9 日)tigran1999
gitster

tag:添加 tag.gpgSign 配置选项以强制所有标签进行 GPG 签名

由于许多 CI/CD 工具在执行命令时不允许控制命令行选项git tag,因此配置文件中的默认值将允许在需要时强制执行标记签名。

添加了新的配置文件选项tag.gpgSign以定义标签签名的默认行为。
要覆盖命令行选项的默认行为,-s可以使用:--sign--no-sign

$ git tag -m "commit message"

tag.gpgSign如果选项为真,将生成一个 GPG 签名标签,而

$ git tag --no-sign -m "commit message"

将跳过签名步骤。

git configfor 标签现在包括:

tag.gpgSign

一个布尔值,用于指定是否所有标签都应进行 GPG 签名。

在自动脚本中运行时使用此选项可能会导致大量标签被签名。
因此,使用代理可以很方便地避免多次输入 gpg 密码。

请注意,此选项不会影响由“ -u <keyid>”或“ --local-user=<keyid>”选项启用的标签签名行为。


推荐阅读