我使用的存储库很少需要对所有标签进行签名,有时我忘记将
-s
添加到 git tag
,或者更糟糕的是,我使用不了解标签的 Git GUI 创建标签。
有没有办法配置 Git 始终对标签进行签名?
我尝试将以下 hack 添加到
.gitconfig
但它没有任何效果,标签是在没有签名的情况下创建的,除非我在 CLI 中手动提及 -s
。
[alias]
tag = tag -s
[tag]
forceSignAnnotated = true
[commit]
gpgsign = true
Git 2.23 更新(2019 年第 3 季度),您现在拥有
git config tag.gpgSign true
!
原始答案(2018年6月)
虽然 git 标签没有“默认签名”模式,但 文档提到:
一旦有了可供签名的私钥,您就可以通过设置 user.signingkey 配置设置来配置 Git 使用它来签名。
git config --global user.signingkey 0A46826A
默认情况下,默认签名模式 (
) 下的git tag
将使用您的提交者身份(格式为-s
)来查找密钥。Your Name <[email protected]>
如果您想使用不同的默认密钥,您可以在存储库配置中指定它,如下所示:
[user]
signingKey = <gpg-keyid>
注意:如果您使用
-m
选项 (tag -m "a comment" myTag
) 创建标签,则会使它们带注释。
git tag
手册页:
如果给出了
或-m <msg>
并且缺少-F <file>
、-a
和-s
,则暗示为-u <keyid>
。-a
所以你可以:
add -s
)git config tag.forceSignAnnotated true
这样,任何
git tag -m "a comment" myTag
都会触发 gpgpSign。[alias]
tag = tag -s
您不能使用别名覆盖内置命令。使用不同的 别名名称:
[alias]
stag = tag -s
至于
[tag]
forceSignAnnotated = true
这会强制对 annotated 标签进行签名,但您必须创建 带
git tag -a
的注释标签并不比 git tag -s
好多少。
我不知道别名指令,但你的 [tag] 和 [commit] 似乎是正确的,这些对我有用。只需确保(像 Bjoern Rennhak 一样)说 user.signingkey 也已定义并使用有效密钥。另请检查您的 git 版本,因为“forceSignAnnotated”仅在 Git 版本 2.9.0 中可用。