出于分析的目的,我想运行以下命令并查看哪些提交是在一个相当大的存储库中签名的:
git log --pretty="%h %G?"
根据Git文档,%G?占位符可以返回:
GB的错误签名UX以获得过期的好签名Y用于使用过期密钥所作的良好签名R以获得由已撤销密钥所作的良好签名E。N预期的结果是为在G中显示为Verified的每个提交获取一个GitHub状态。然而,我主要得到的是E状态。
git verify-commit commit-sha对具有E状态输出的提交:
gpg: Signature made Wed 17 June 13:19:22 2020 EEST
gpg: using RSA key C90455E28OCA2B4DAD319037E77216ECEABAF951
gpg: Can't check signature: No public key我完成了以下gpg设置:
git config --global gpg.program $(which gpg)
curl https://github.com/web-flow.gpg | gpg --import
gpg --edit-key noreply@github.com (where I put `trust` and gave 6 - ultimate)
gpg --lsign-key noreply@github.com我得到的git log状态G的唯一提交似乎是通过GitHub的UI完成的,因为它的键已成功地插入到gpg中。
我是否应该爬行并获取回购中所有投稿人的所有公钥(比如他们的电子邮件),然后将它们插入gpg中?实际上,在本地的GitHub中,查看所有提交的签名的最简单方法是什么?
发布于 2020-06-22 13:31:54
我是否应该在回购中为所有投稿人抓取所有公钥(使用电子邮件),然后将它们插入gpg中?
是。gpg --recv-keys email1 email2…您可以从存储库中获得电子邮件列表:
git log --all --format="%ae" | sort -u
git log --all --format="%ce" | sort -u(作者和提交人电子邮件)。让我们将其合并到几个命令中:
all_emails=$({ git log --all --format="%ae"; git log --all --format="%ce"; } | sort -u)
gpg --recv-keys $all_emailshttps://stackoverflow.com/questions/62514745
复制相似问题