我该如何配置git默认使用PGP签署我的标签(不是提交)?

9

目前我有以下~/.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'
2个回答

21

从 Git 2.23 (2019年第三季度) 开始,您现在可以使用一个新的tag.gpgSign配置变量,将 "git tag -a"变成 "git tag -s"! 您可以通过以下方式默认启用它:

git config --global tag.gpgSign true

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

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

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

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

$ git tag -m "commit message"

如果 tag.gpgSign 选项为 true,则会生成带 GPG 签名的标签,而

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

git config 现在包括:

tag.gpgSign:

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

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

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


-1

我想,这个问题已经没有得到回答的必要了,因此我的解决方法就是唯一的答案。只需设置一个git别名:

git alias.tag 'tag -s'

1
这不起作用,因为您无法“覆盖”_内部git命令_。 - Emanuel Bennici

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接