【问题标题】:How do I configure git to PGP sign my tags by default (not my commits)默认情况下,如何将 git 配置为 PGP 签署我的标签(不是我的提交)
【发布时间】:2018-09-04 08:43:30
【问题描述】:

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


    【解决方案1】:

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

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

    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 config for tag 现在包括:

    tag.gpgSign:

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

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

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

    【讨论】:

      【解决方案2】:

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

      git alias.tag 'tag -s'
      

      【讨论】:

      • 这行不通,因为你不能“覆盖”内部 git 命令
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-25
      • 2011-11-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多