如何将git配置为默认情况下PGP对我的标签进行签名(而不是我的提交)

时间:2018-09-04 08:43:31

标签: git

我目前有以下~/.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 个答案:

答案 0 :(得分:1)

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

请参见commit 1c6b565Tigran Mkrtchyan (tigran1999)(2019年6月5日)。
(由Junio C Hamano -- gitster --commit 492d7a5中合并,2019年7月9日)

  

标签:添加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 for tag现在包括:

  

tag.gpgSign

     

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

     

在自动化脚本中运行时使用此选项可能导致对大量标签进行签名。
  因此,使用代理来避免多次键入gpg密码很方便。

     

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

答案 1 :(得分:0)

我想,这个问题没有得到足够长的答案,以保证我的解决方法是唯一的答案。只需设置一个git别名:

git alias.tag 'tag -s'