【发布时间】:2013-06-28 19:09:08
【问题描述】:
使用较新版本的git,可以使用 PGP 密钥对单个提交(除了标签)进行签名:
git commit -m "some message" -S
您可以使用--show-signature 选项在git log 的输出中显示这些签名:
$ git log --show-signature
commit 93bd0a7529ef347f8dbca7efde43f7e99ab89515
gpg: Signature made Fri 28 Jun 2013 02:28:41 PM EDT using RSA key ID AC1964A8
gpg: Good signature from "Lars Kellogg-Stedman <lars@seas.harvard.edu>"
Author: Lars Kellogg-Stedman <lars@seas.harvard.edu>
Date: Fri Jun 28 14:28:41 2013 -0400
this is a test
但是除了通过 grepping git log 的输出之外,还有其他方法可以以编程方式验证给定提交上的签名吗?我正在寻找与git tag -v 等效的提交——它将提供一个退出代码,指示给定提交上是否存在有效签名。
【问题讨论】:
-
我认为应该是
git commit ...和git log ...。据我所知,gpg没有添加透明地传递给git的子命令......我没有任何要测试的存储库,但git show --show-signature <commitish>工作吗? -
show_signature仅在输出中添加内容(请参阅github.com/git/git/blob/master/log-tree.c#L370)。 -
注意:您很快就会有
--raw用于git verify-tag/git verify-commit。见my answer below -
注意:对于 GIt 2.11(2016 年第四季度),
git log引入了额外的状态代码E、X、Y、R用于ERRSIG、EXPSIG、@ 987654348@和REVKEYSIG,以便%G?的用户获得更多信息。见my edited answer below -
使用 Git 2.26(2020 年第一季度),新配置
gpg.minTrustLevel可以在使用git verify-tag/verify -commit时提供帮助。见my edited answer below。
标签: git