有没有办法使用 GPG 密钥在 Git 中“自动签名”提交?

2023-11-27

有没有一种简单的方法可以让 Git 始终对创建的每个提交或标签进行签名?

我尝试过类似的东西:


alias commit = commit -S  

但这并没有达到目的。

我不想安装不同的程序来实现这一点。可以轻松实现吗?

只是一个附带问题,也许提交不应该被签名,只有标签,我从来没有创建过,因为我为 Homebrew 等项目提交了单个提交。


注意:如果您不想添加-S始终确保您的提交已签署,有一个提案(分支'pu' 目前是 2013 年 12 月,所以不能保证它会成为 git 版本)来添加一个配置来为您处理该选项。
2014 年 5 月更新:它位于 Git 2.0 中(之后被在此补丁系列中重新发送)

See 提交 2af2ef3 by 尼古拉斯·维吉尔 (boklm):

Add the commit.gpgsign签署所有提交的选项

如果你想要 GPG 签署你的所有提交,你必须添加-S一直有选择。
The commit.gpgsign配置选项允许自动签署所有提交。

commit.gpgsign

一个布尔值,用于指定所有提交是否都应进行 GPG 签名。
在执行变基等操作时使用此选项可能会导致大量提交被签名。使用代理可能会很方便,以避免多次输入 GPG 密码。


该配置通常是每个存储库设置的(您不需要签署您的私有实验本地存储库):

cd /path/to/repo/needing/gpg/signature
git config commit.gpgsign true

你可以将其与user.signingKey用作全局设置(用于您要签署提交的所有存储库的唯一密钥)

git config --global user.signingkey F2C7AB29!
                                           ^^^

As ubombi建议在评论(并在“GPG 硬件密钥和 Git 签名“, 基于 ”如何指定用户 ID")

使用 gpg 时有一个感叹号 (!) 可以附加到强制使用指定的主键或辅助键,而不是尝试计算要使用哪个主键或辅助键。

注意Rik添加评论:

如果您使用的是 YubiKey(按照推荐)之类的东西,则无需担心感叹号,因为您应该拥有的可用于主密钥对的唯一签名密钥是:

  • 主键本身,应该有一个#当它显示不可用后,
  • 和秘密子密钥>之后它表明它是一个存根,指向 YubiKey 作为其小程序中唯一可用的签名密钥。

仅当您在系统上保留所有私钥时(不好的做法),那么防止在可用签名密钥之间自动选择可能是一个好主意


user.signingKey在 git 1.5.0(2007 年 1 月)中引入提交 d67778e:

不应该要求我在其中使用与我的名字相同的形式 我的 git 存储库和 gpg 密钥。
此外,我的密钥环中可能有多个密钥,并且可能想要使用与我在提交消息中使用的地址不匹配的密钥。

该补丁添加了一个配置条目“user.signingKey”,如果存在,将被传递到 gpg 的“-u”开关,允许覆盖标签签名密钥。

这是强制执行的提交aba9119(git 1.5.3.2) 为了捕获如果用户配置错误的情况user.signingKey在他们的.git/config或者只是他们的钥匙圈上没有任何秘密密钥。

Notes:

  • 按照惯例,自 git 2.4.0 2015 年 3 月起, it is signingKey, not signingkey,尽管git config键不区分大小写。只有你这样做才重要git config --get-regexp, which is区分大小写,否则,这只是一个可读性约定;
  • 如果你想要git 服务器检查每个推送的签名,您至少需要 git 2.2+(2014 年 10 月)(提交 b945901), as git push --signed未能考虑到user.signingKey配置值;
  • git 2.9(2016 年 6 月)将使用user.signingKey强制签名注释tags以及承诺:提交 61c2fe0.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有没有办法使用 GPG 密钥在 Git 中“自动签名”提交? 的相关文章

随机推荐

  • Spring @RequestBody 继承

    我读过几篇试图解释这一点的帖子 但我无法让它发挥作用 我有一个场景 输入JSON我的服务可以有几个子类型 基本上 我有一个基类UserDto进而ClientDto and OwnerDto两者都延伸自UserDto 我希望控制器能够解析具体
  • 将 ActionListener 添加到 JList

    我有一个带有字符串数组的 JList 基本上它显示餐厅菜单 在 JList 旁边 我有另一个空的 JList 每当用户双击第一个 JList 显示菜单的位置 中的字符串时 我希望它显示在紧邻的下一个 JList 上 我怎么做 你可以试试 f
  • 在 iOS 中使用多个 Storyboard

    我的目标是创建一个选项卡式应用程序 然后在单独的故事板中构建每个选项卡的视图 我的主故事板是一个选项卡视图 Then I create a secondary storyboard storyboard 2 with 2 View Cont
  • 如何在python中计算两点之间的直线的坐标?

    如何获取python中两点之间的所有坐标点 例如 我有一个点的坐标为 x1 y1 另一个点的坐标为 x10 y10 我需要它们之间的所有点 在本例中例如 x2 y2 x9 y9 非常感谢您的帮助 他们全部 有无数个 You can 计算这两
  • 无法安装 JSON gem

    我需要安装 json 因为我收到此错误 Could not find json 1 4 6 in any of the sources I ran gem install json and bundle install但我只能在需要 jso
  • 使用 ReactiveUI 中的代码隐藏在 ListBox 内绑定数据

    我有 WPF 列表框
  • OpenCV 确定相交/重叠区域

    我正在使用 OpenCV 和 python 创建一个拼接程序 目前正在很好地拼接图像 现在正在尝试将它们混合在一起 最终目标是使用图形切割来更好地缝合它们 但现在我只是根据发现的单应性重叠图像 Here is a photo of my c
  • px、dip、dp 和 sp 有什么区别?

    计量单位之间有什么区别 px dip dp 和 sp 来自Android 开发者文档 px Pixels corresponds to actual pixels on the screen in Inches based on the p
  • Lato 字体在 IE 和 Firefox 中缺少字母

    Lato Google 托管 不确定字体 字体是怎么回事 在 IE 8 上 字体看起来很混乱 缺少字母和单词空格 而且我听说早期 不是那么早期 版本的 Firefox 也是如此 当您无法在许多浏览器上阅读字体 或托管字体时 它有什么意义 拉
  • 需要一个正则表达式来排除某些字符串

    我正在尝试获取一个匹配的正则表达式 somefile 1 txt somefile 2 txt somefile anything txt 但不匹配 somefile 16 txt I tried somefile 16 txt 运气不好
  • 要么或需要验证

    我想使用 ComponentModel DataAnnotations 验证两个属性中至少之一具有值 我的模型看起来像这样 public class FooModel public string Bar1 get set public in
  • Flutter 中的滑动视图

    我正在尝试在 flutter 中制作类似于谷歌 苹果地图屏幕的东西 我刚刚开始在 Flutter 中进行实验 我很难理解 可拖动小部件 有人可以给我他们如何制作幻灯片视图的示例代码 我可以学习吗 我找不到 还有向上滑动面板您可以使用 Flu
  • 如何无限滚动抓取网站?

    我想爬行这个网站 我写了一个蜘蛛 但它只爬首页 即前 52 项 我试过这段代码 from scrapy spider import BaseSpider from scrapy selector import HtmlXPathSelect
  • 使用facet_wrap时如何减少facet标签之间的垂直间距?

    我使用facet wrap绘制了按两个因素分组的二维面板 最小的例子 library ggplot2 ggplot mpg aes displ hwy geom point facet wrap cyl drv 每个面板顶部的标签有两行 我
  • 命令提示符和cmd有什么区别?

    我有 Windows 7 Windows 8 和 Windows 10 系统 它们的行为都很相似 当我在开始菜单中键入命令提示符并按 Enter 键时 会出现一个标题为 命令提示符 的窗口 我给了它蓝色背景和绿色文本 当我在命令行中输入 s
  • 是否可以更改 Selector xml 中 Button 的左侧可绘制部分?

    我有一个分配给按钮的左可绘制对象以及一个背景可绘制对象 我想提供一个选择器 以便当用户按下 聚焦 禁用按钮时 其外观会发生变化 我用于左侧可绘制的图像是一个红色的 x 我希望在按下或禁用按钮时将其替换为灰色 X 使用选择器可以做到这一点吗
  • Xcode 7.3:导入模块显示有删除线

    将 Xcode 升级到 7 3 后 我发现一些模块在导入时被删除 如下截图所示 But after adding the module so just pressing enter everything is fine What does
  • 蚂蚁路径风格图案

    规则是什么蚂蚁路径风格图案 令人惊讶的是 Ant 网站本身的信息却很少 蚂蚁风格的路径模式匹配spring框架 映射使用以下规则匹配 URL 匹配一个字符 匹配零个或多个字符 匹配路径中的零个或多个 目录 spring a z 匹配正则表达
  • DropDownList 不会在 SelectedIndexChanged 上回发

    我正在编写一个 ASP Net Web 表单 其中包含一些 DropDownList 控件 然后用户更改下拉列表之一中的选定项目 ASP Net 似乎不会处理 SelectedIndexChanged 事件 直到通过单击 提交 按钮提交表单
  • 有没有办法使用 GPG 密钥在 Git 中“自动签名”提交?

    有没有一种简单的方法可以让 Git 始终对创建的每个提交或标签进行签名 我尝试过类似的东西 alias commit commit S 但这并没有达到目的 我不想安装不同的程序来实现这一点 可以轻松实现吗 只是一个附带问题 也许提交不应该被