如何配置git以始终对标签进行签名?

sor*_*rin 8 git git-config git-tag

很少有仓库我使用需要签署所有标签,有时我忘了加-sgit tag,或者更糟的是,我创建使用没有关于标签想法git的GUI标签.

有没有办法配置GIT始终签署标签?

我提到我尝试添加以下hack(s).gitconfig但它没有任何效果,标签是在没有签名的情况下创建的,除非我在cli上手动提到了-s.

[alias]
tag = tag -s

[tag]
forceSignAnnotated = true

[commit]
gpgsign = true
Run Code Online (Sandbox Code Playgroud)

Von*_*onC 8

虽然git tag没有"默认签名"模式,但文档提到:

一旦有了用于签名的私钥,就可以通过设置user.signingkey配置设置来配置Git以使用它来签名.

git config --global user.signingkey 0A46826A
Run Code Online (Sandbox Code Playgroud)

默认情况下,git config tag.gpgSign true在sign-with-default模式下(git tag)将使用您的提交者身份(表单-s)来查找密钥.
如果要使用其他默认密钥,可以在存储库配置中指定它,如下所示:

[user]
    signingKey = <gpg-keyid>
Run Code Online (Sandbox Code Playgroud)

注意:如果使用Your Name <your@email.address>选项(-m)创建标记,则会对其进行注释.

tag -m "a comment" myTag手册页:

如果git tag或被-m <msg>给予,和-F <file>,-a并且-s缺席,-u <keyid>则暗示.

所以你可以:

  • 没有为git标签定义别名(不是-a)
  • 从终端设置 add -s

这样,任何git config tag.forceSignAnnotated true会触发gpgpSign.
仅适用于带注释的标签,但由于那些应该不仅仅是您的仓库本地但也被推送,这应该足够了.


phd*_*phd 5

[alias]
tag = tag -s
Run Code Online (Sandbox Code Playgroud)

您不能使用别名覆盖内置命令。使用不同的名称作为别名:

[alias]
stag = tag -s
Run Code Online (Sandbox Code Playgroud)

至于

[tag]
forceSignAnnotated = true
Run Code Online (Sandbox Code Playgroud)

这会强制对带注释的标签进行签名,但您必须创建带注释的标签git tag -a,这并不比git tag -s.