git - 从 VS Code 提交更改到 GitHub 时出错
问题描述
在我更改本地存储库中的一些文件后,我想将这些文件提交给我的 GitHub 代表。每次出现此错误时,我都不知道如何解决。我试图在我的电脑上卸载 VSCode 和 Git,没有任何改变。
错误:无法生成 gpg2:没有这样的文件或目录错误:gpg 未能签署数据致命:未能写入提交对象
解决方案
您选择使用gpg2
来签署每个提交。Git 本身从不进行任何身份验证,当你告诉它你是 Fred Astaire 或 Ginger Rogers 或任何你想自称的人时,它只会相信你。
有人对此表示反对。为了帮助他们,Git 提供了运行数字签名程序的能力。您可以选择:
签署每一个提交:那些有权访问数字签名验证软件的人可以确信你确实是 Fred Rogers 或 Ginger Astaire 或任何人。
签名标签:有权访问数字签名验证软件的人可以告诉您,无论签名验证您是谁,都同意此特定标签代表该软件的良好版本。
因为提交形成了一个Merkle 树,所以签署一个标签与签署所有导致该标签的提交“一样好” 。1
如果您确实选择对每个提交或某些标签进行数字签名,则必须提供可以执行此操作的数字签名软件。Git 不附带 PGP 或 GPG。不过,它们的使用范围很广。您可能需要对 Git 进行一些配置;参见gpg failed to sign the data fatal: failed to write commit object [Git 2.10.0]了解更多详情。
1更准确地说,它与 Merkle 树中的加密哈希可以验证一样好。由于 Git 有点弱,这不如签署每个提交。然而,SHA-1 的弱点,至少就目前所知,并没有那么大,因此对提交链的任何攻击都是显而易见的。
推荐阅读
- python - 获取所有原始数据;{ } 中与值相关的键、值
- excel - 将 Excel 数据透视表数据源显示为单元格值
- google-apps-script - 我可以在 Google Drive OCR 中为太小的字母设置阈值吗?
- python - 未捕获来自 Tkinter Gui 中 loop() 的 MQTT 事件
- javascript - 谷歌社交登录按钮不显示
- google-sheets - 将大写单元格与小写单元格分开排序
- java - 通过 java 监控 JVM CPU/RAM 使用情况
- python - 如何在 LDAP 中获取用户 euid 的名字?
- python - 如何决定在正则表达式中分割哪个空格?
- python - GCP AI Platform:创建自定义预测模型版本时出错(训练模型 Pytorch 模型 + torchvision.transform)