使用gpg密钥验证github提交

2023-11-06

git是现在最流行的版本控制工具,而且它确实功能很强大。在使用git之前,首先要设置用户名和电子邮箱两个参数。可能有人会有疑问,假如两个不同的人使用相同的用户名和电子邮箱进行提交,会怎么样呢?答案是可以的,git本身无法判断,所以会把这两个人识别为同一个人。为了可靠的验证每一次提交,git提供了gpg密钥的验证功能。

首先我们需要安装gpg工具,可以用Linux系统、Windows 10的Linux子系统、Git Bash工具等等,它们基本上都包含gpg工具。

创建gpg密钥

首先验证一下gpg版本。
验证gpg版本

如果gpg版本在2.1.17以上,就用下面的命令:

gpg --full-generate-key

如果gpg版本在2.1.17以下,用下面的命令:

gpg --default-new-key-algo rsa4096 --gen-key

然后按照提示输入密钥类型、密钥长度、过期时间、用户名、密码等信息,其中密钥长度推荐4096,其他按需输入即可。

输入信息

密钥创建完毕之后,用下面的命令来列出已经创建好的密钥ID:

gpg --list-secret-keys --keyid-format LONG

列出密钥

然后就可以查看密钥内容了,你需要将ID替换为自己的:

gpg --armor --export 831CF40177EA9999

密钥内容以-----BEGIN PGP PUBLIC KEY BLOCK-----开始,以-----END PGP PUBLIC KEY BLOCK-----结束。
密钥内容

向github添加gpg密钥

首先打开github用户设置,然后在SSH and GPG keys中添加GPG密钥,然后将上面得到的包括BEGINEND在内的东西复制进去并选择添加,这样就完成了GPG密钥的添加工作。
添加gpg密钥

当然,细心的同学会发现这里截图的密钥ID和上面生成的好像不一样,因为一开始我是在Git Bash中设置生成的gpg密钥,最后添加到github中。但是为了截图,所以我又在WSL中重新运行了一下命令,所以生成的密钥不一样。由于它们都是非对称加密,所以公钥和密钥ID可以公开展示。

在git中设置gpg密钥

最后一步就是在本地git中设置gpg密钥了。首先用下面的命令列出所有gpg密钥ID:

gpg --list-secret-keys --keyid-format LONG

密钥ID

然后将密钥ID添加到git设置中:

git config --global user.signingkey 831CF40177EA9999

如果要让当前git项目启用签名验证,使用下面的命令:

git config commit.gpgsign true

如果要让所有项目都启用签名验证:

git config --global commit.gpgsign true

这样一来,在使用git commit命令提交的时候,就会用gpg来签名提交,当然也可以在提交的时候使用git commit -S参数来显式启用验证。

最后,当项目提交到Github之后,点击进入提交详情查看的时候,就可以看到一个绿色的Verified标志,表示这次提交已经经过验证,确认是作者本人的提交了。

提交确认

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用gpg密钥验证github提交 的相关文章

  • 从分叉存储库的 GitHub 操作发布评论的解决方法

    我需要在 GitHub 操作完成后向 GitHub 拉取请求发表评论 例如当 FOSS 社区成员提交 PR 时 我知道 当操作从分叉的存储库运行时 令牌没有对父存储库的写访问权限 因此它无法发布评论 人们是否为此找到了任何可行的解决方法 我
  • 执行 git Push 时出现“diff.renamelimit 变量”警告

    我将本地提交推送到远程 git 服务器并收到以下警告消息 remote warning only found copies from modified paths due to too many files remote warning y
  • 自动同步两个 git 存储库

    是否可以保持同步两个 Github 存储库 远程 的特定文件夹 有两个 github 存储库 repoA 和 repoB 这两个存储库都有名为 ABC 的文件夹以及其他独特的文件夹 如果repoA的文件夹ABC中的任何文件有更新 我想自动更
  • 为什么“git描述-dirty”在描述干净结帐时添加“-dirty”后缀?

    我刚刚发现 dirty选项git describe看起来它应该做一些非常有用的事情 即在输出中附加一个后缀git describe当工作树脏时 但是在我的一些存储库上似乎并非如此 git status On branch 8 30 noth
  • Jenkins GIT 包含从未构建过的区域

    我正在尝试使用包含区域在 Jenkins 中构建我的工作 但每当选中此选项时 民意调查结果总是说未检测到任何更改 我尝试了许多不同的路径 以及使用工作区进行 不进行强制轮询 结果是轮询从未检测到任何更改 但一旦我删除这些选项 它们就会在下一
  • 在 Windows 上使用 Git - 意外丢失了大量工作。我可以拿回来吗?

    我很困惑 我想我已经失去了几个小时的工作时间 我之前在 Git 中编辑了一个文件 我保存了它 但没有提交 我确实做了一些其他文件更改 并提交并推送了它们 然而 有一个文件被搞乱了 所以我单击了最后一次成功的提交 然后按了 回滚到此提交 令我
  • 将 Visual Studio 在线 Git 存储库集成到 Android Studio 1.0.2

    我正在使用 Visual Studio Online 进行开发过程 我想将我的 Android Studio 1 0 2 代码集成到其中 但是 据我所知 Android Studio 没有 TFS 插件 这就是为什么我想使用 Git 进行源
  • 更改先前提交的作者姓名:快进推送被拒绝

    我最近在 GitHub 上打开了一个存储库 我是 Git 新手 与新人一样 我使用默认名称和电子邮件进行提交 按照最佳菜鸟传统 我发现五次提交为时已晚 现在乐趣开始了 因为我开始搜索有关如何更改这些提交的作者和提交者名称的信息 美好的 我基
  • 使用 TFS REST API 获取 Git 提交的最新关联工作项

    我正在尝试获取关联的工作项使用 TFS REST API 进行 GIT 提交 https www visualstudio com en us docs integrate api git commits 我的请求 URL 如下所示 htt
  • 使用 GitHub,在添加现有存储库时如何推送所有分支?

    我创建了一个新的 GitHub 存储库 我想将现有的存储库放在那里 我按照说明操作 cd existing git repo git remote add origin email protected cdn cgi l email pro
  • 如何恢复已删除的远程分支

    我们的远程主分支被删除 我有主存储库的本地副本 但它已经过时了 我可以通过将最后一个已知的提交哈希值插入 URL 来查看 github 中的分支 但未能成功恢复它 我尝试了几个步骤来恢复它 git reset hard 16deddc05c
  • Github 操作错误地认为变量是秘密,因此不设置输出

    我的工作流程文件中的一个步骤将返回我的 aws 账户中 EC2 实例的一些 ID 然后我将这些 ID 设置为 github 输出 以便在我的工作流程文件中的其他作业中使用 我在许多工作流程中都这样做了 步骤将返回如下内容 i 0d945b0
  • 检查 Git 中是否需要 pull

    如何检查远程存储库是否已更改并且需要拉取 现在我使用这个简单的脚本 git pull dry run grep q v Already up to date changed 1 但它比较重 有没有更好的办法 理想的解决方案是检查所有远程分支
  • Smartgit:自动插入提交消息

    有没有办法使用钩子脚本在 Smartgit 中自动插入提交消息 重击 如果用户提交了他的更改 我想预加载提交消息字段 我没有看到任何SmartGit配置 http www syntevo com smartgit documentation
  • 删除 Xcode 项目的源代码控制

    我在 Xcode 项目上使用源代码控制已经有一段时间了 但现在我不想使用源代码控制 如何从 Xcode 中的项目中删除源代码控制 有三种方法 方法 1 将禁用所有项目的源代码管理 方法 2 将删除所有项目的单个存储库的链接 方法 3 将删除
  • 为什么从网上下载Git 2.0,总是得到1.9.4的安装包?

    为什么从网上下载Git 2 0 总是得到1 9 4的安装包 为什么你不能在互联网上的任何地方找到一个不仅标记为 2 0 而且你下载的安装存档也标记为这样的 Git 安装程序包 例如 这个2 1 3 站点 http git scm com d
  • 为什么 git 在每次合并时都运行“git gc --auto”?

    今天 git 开始表现得很有趣 嗯 比平时更有趣 坚持运行git gc每次合并后 即使它们是背靠背的 C Projects my current project gt git pull remote Counting objects 31
  • 如何在现有裸存储库中创建引用日志信息

    您可能已经知道 默认情况下 git 不会为新的裸存储库启用引用日志更新 问题是 我有一个很长的历史存储库 但它是在我设置 logAllRefUpdates 标志之前创建的 现在我希望其他应用程序可以使用该信息 如何通过对现有存储库进行最少的
  • git 清除远程仓库

    如果我将错误的初始提交 或多个 推送到远程存储库 并且只想清除 销毁它 我可以通过命令来完成吗 将其从服务器中完全删除非常重要 这样它就不会占用磁盘空间 例如 今天我推送了一个完整的 Visual Studio 项目 其中包含 dll sd
  • gerrit - git(pull、checkout、cherrypick)的用途是什么?

    在 Android 的 gerrit ex 中 link https android review googlesource com c 109934 要下载补丁 我看到4个选项 回购下载 checkout pull 择优挑选 它们之间有什

随机推荐

  • 计算机提示d3dcompiler43.dll缺失怎么修复,多个解决方法分享

    在游戏玩家中 遇到游戏提示找不到 d3dcompiler43 dll 文件的情况并不罕见 这使得许多玩家在启动游戏时感到困扰 因为这意味着他们可能无法正常运行游戏 那么 d3dcompiler43 dll 文件到底是什么呢 为什么游戏会提示
  • 数据库实现学生管理系统

    1 QT将数据库分为三个层次 1 gt 数据库驱动层 QSqlDriver QSqlDriverCreator QSqlDriverCreatorBase QSqlDriverPlugin 2 gt sql接口层 QSqlDatabase
  • 在剪贴板上有大量信息,是否保留其内容, 以便此后粘贴到其他程序中? VBA 对策

    在剪贴板上有大量信息 是否保留其内容 以便此后粘贴到其他程序中 对策a 是文件关闭前 随便复制一个空单元格就可以了 对策b Application DisplayAlerts False 关闭任何提醒 但复制的信息将仍旧保存在剪贴板中 对策
  • Qt数据库编程

    Qt数据库编程 版本说明 版本 作者 日期 备注 0 1 loon 2018 10 25 初稿 目录 文章目录 Qt数据库编程 版本说明 目录 一 需求和目的 二 使用说明 1 Qt 5 6 0的数据库操作类 2 Driver Layer
  • 堆栈指针SP

    1 什么是堆栈指针 在51系列单片机里 堆栈指针sp在片内RAM128B中开辟栈区 并随时跟踪栈顶地址 它是按 先进后出 的原则存取数据 开机复位后 单片机栈底地址为07H 主要用来保存临时数据 局部变量和中断 调用子程序程序的返回地址 堆
  • java的传值调用什么_Java的传值调用

    本文非引战或diss 只是说出自己的理解 欢迎摆正心态观看或探讨 引子 之所以写这篇文章是因为前些天写了一篇 Java中真的只有值传递么 探讨了网上关于Java只有值传递的说法 当时写这篇文章的缘由是因为之前看的文章讲解的Java只有值传递
  • pytorch基础学习笔记

    import torch import numpy as np def describe x print Type format x type print Shape size format x shape print Values n f
  • 第四题

    第四题 找MD5解密网址 ok
  • 【网络编程socket】java NIO编程示例以及流程详解

    文章目录 1 NIO架构图 2 服务端代码 3 客户端代码 4 运行 4 1 非nio客户端 4 2 nio客户端 参考 相关文章 网络编程socket 图解 Java NIO BIO MIO AIO 四大IO模型与原理 网络编程socke
  • 药品的泡罩包装技术介绍

    导读 药品的泡罩包装是通过真空吸泡 吹泡 或模压成型的泡罩内充填好药品后 使用铝箔等覆盖材料 并通过压力 在一定温度和时间条件下与成泡基材热合密封而成 药品的泡罩包装又称为水泡眼包装 简称为PTP Press through Packagi
  • 刷脸支付为消费者节省下时间和交易成本

    刷脸支付不仅是一种支付手段 更是一个基于刷脸的应用平台 它的意义完全不逊色于10年前移动支付的诞生 刷脸支付是脱离了私人终端 脱离了APP的一种核身支付方式 把两大巨头的支付业务拉到了同一个起跑线 因为微信在刷脸支付的战场上是去了核心优势
  • [Python人工智能] 十一.Tensorflow如何保存神经网络参数

    从本专栏开始 作者正式开始研究Python深度学习 神经网络及人工智能相关知识 前一篇详细讲解了Tensorflow Opencv实现CNN自定义图像分类案例 它能解决我们现实论文或实践中的图像分类问题 并与机器学习的图像分类算法进行对比实
  • 网联与线上支付

    网联的前世今生 网联系统始建于2016年 是独立于现有银行间支付清算机构的新平台 该平台只有清算功能 不做支付 也不发卡 平台由各个参与方自主共建 除了央行和支付清算协会以外 其余股东股份最高不超过10 防止被大型支付机构垄断 在第三方支付
  • java中怎么比较两个自定义实体对象是否相等(比如在Set数据结构中去重)

    需求 有一个类Person 需要判断Account类的对象account1 account2是否相等 判断规则为 当id int类型判断是否带下相等 和department 判断字符串内容是否相等 属性均相等时 默认两个属性都必须非空 若有
  • C语言:合并两个有序数列,并保持有序性。

    C语言 合并两个有序数组 并保持有序性 include
  • 超详细 Windows 安装 PyTorch 步骤+ conda 常用命令

    目录 配置 PyTorch 安装环境 下载安装 Ananconda 创建 PyTorch 安装环境 conda 常用命令 安装 PyTorch 说在前面 安装非 GPU 版本的 PyTorch 安装 GPU 版本 PyTorch 检查 CU
  • [管理与领导-61]:IT基层管理者 - 潜技能 - 1 - 职场中的陷阱- 职场中常见的陷阱与应对措施

    目录 一 常见陷阱 二 应对措施 一 常见陷阱 在职场中 有许多常见的陷阱 下面是一些例子 过度承诺和无法有效管理时间 在职场中 很容易迫于压力而承诺过多的事情 导致时间管理困难和任务完成的延误 这可能导致质量下降 工作生活平衡失衡 甚至疲
  • spring cache设置指定Key过期时间

    今天是2019年最后一天 回想年初立下的小目标 貌似都完成的不理想 还得继续努力啊 生活还在继续 加油 最近刚好在使用spring cache做缓存的时候 有需要针对不同的key设置过期时间的场景 找了下资料 实现这个功能 做个总结 spr
  • Ubuntu中报错:failed to create hard link

    1 完整报错打印 上面是我在编译jpg图片的解码库时遇到的报错 报错原因显示创建硬链接失败 不允许创建硬链接 2 报错原因分析 1 我是在Ubuntu和Windows的共享文件夹目录中编译程序 共享目录是Ubuntu和Windows共享的
  • 使用gpg密钥验证github提交

    git是现在最流行的版本控制工具 而且它确实功能很强大 在使用git之前 首先要设置用户名和电子邮箱两个参数 可能有人会有疑问 假如两个不同的人使用相同的用户名和电子邮箱进行提交 会怎么样呢 答案是可以的 git本身无法判断 所以会把这两个