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

时间:2018-06-01 15:38:57

标签: git

我使用的存储库很少需要对所有标记进行签名,有时我忘记将-s添加到git tag,更糟糕的是,我使用不知道标记的git GUI创建标记

有没有办法将GIT配置为始终对标签进行签名?

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

[alias]
tag = tag -s

[tag]
forceSignAnnotated = true

[commit]
gpgsign = true

3 个答案:

答案 0 :(得分:6)

虽然git tag没有“默认签名”模式,the documentation mentions

  

一旦你有一个私钥可以签名,你可以配置Git,通过设置user.signingkey配置设置来使用它来签名。

git config --global user.signingkey 0A46826A
  

默认情况下,{ - 1}}在默认签名模式(git tag)下将使用您的提交者身份(-s形式)来查找密钥。
  如果要使用其他默认密钥,可以在存储库配置中指定它,如下所示:

Your Name <your@email.address>

注意:如果您使用[user] signingKey = <gpg-keyid> 选项(-m)创建代码,则会对其进行注释

来自git tag man page

  

如果提供tag -m "a comment" myTag-m <msg>并且-F <file>-a-s不存在,则隐含-u <keyid>

所以你可以:

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

这样,任何git config tag.forceSignAnnotated true都会触发gpgpSign 仅适用于带注释的标签,但由于those are ones which are supposed to be not just local to your repo but also pushed,这应该足够了。

答案 1 :(得分:1)

has_many :comments, serializer: CommentSerializer

您无法使用别名覆盖内置命令。使用不同的 别名的名称:

[alias]
tag = tag -s

至于

[alias]
stag = tag -s

这会强制签署带注释的标记,但您必须创建 带有[tag] forceSignAnnotated = true 的带注释标签,与git tag -a相比要好得多。

答案 2 :(得分:0)

我不知道别名指令,但是您的[tag]和[commit]似乎正确,并且这些对我有用。只需确保(如Bjoern Rennhak)说过,user.signingkey也已定义并使用有效密钥。另外,请检查您的git版本,因为“ forceSignAnnotated”仅在Git版本2.9.0起才可用。