首页 > 解决方案 > 从 VS Code 提交更改到 GitHub 时出错

问题描述

在我更改本地存储库中的一些文件后,我想将这些文件提交给我的 GitHub 代表。每次出现此错误时,我都不知道如何解决。我试图在我的电脑上卸载 VSCode 和 Git,没有任何改变。

错误:无法生成 gpg2:没有这样的文件或目录错误:gpg 未能签署数据致命:未能写入提交对象

标签: gitgithubvisual-studio-codevscode-settings

解决方案


您选择使用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 的弱点,至少就目前所知,并没有那么大,因此提交链的任何攻击都是显而易见的。


推荐阅读