使用 GPG 签署 git 提交的问题

Issues with signing git commits with GPG

在执行 windows 重新安装后,我在使用 github 设置 GPG 提交签名时遇到了一些问题。

问题:

提交时,GPG 签名失败返回此错误:

gpg: skipped "993E2EFC8503C42F": No secret key
gpg: signing failed: No secret key
error: gpg failed to sign the data
fatal: failed to write commit object

我在谷歌上搜索过的关于这个问题的所有内容都指向将 gpg.program 设置为 GnuPG gpg 可执行文件 ("C:\Program Files (x86)\GnuPG\bin\gpg.exe") 的位置,遗憾的是,这并没有解决我的问题。

在 git bash returns 中执行 gpg --list-secret-keys --keyid-format=long 我的 gpg 密钥,但是在 powershell 或 cmd 中执行相同的命令不会,我相信这可能是我的问题,虽然我不知道如何解决这个问题。

已采取的步骤:

  1. here
  2. 安装了 GPG4Win
  3. 已从 here
  4. 安装 git
  5. 按照 github
  6. 的 GPG 设置指南
  7. 设置git config --global user.name "name..."git config --global user.email "email"
  8. git config --global user.signingkey 设置为我的 gpg 密钥
  9. 如其他各种在线教程和答案所述,将 git config --global gpg.program 设置为 "C:\Program Files (x86)\GnuPG\bin\gpg.exe"
  10. git config --global commit.gpgsign 设为真

预期结果:

成功提交经过验证的提交

奖金信息

我想通了!

我最终不太确定问题具体是什么,但是,在卸载 GPG4Win 和 Git 之后,仅重新安装 Git 并完成 GPG 设置过程,我现在能够执行经过验证的提交。这是使用 Gits 捆绑的 GPG 程序,没有其他 GPG 相关安装。

不确定这是否对其他人有帮助,但如果您 windows 遇到此问题,请尝试 运行 在不安装 GPG4Win 的情况下完成 gpg 设置过程,然后只使用 gits 捆绑的 GPG 可执行文件。

记得将 commit.gpgsign 设置为 true 并像这样告诉 git 你的签名密钥 git config --global user.signingkey "your key id" 如果你只想为特定项目设置签名密钥,你可以 cd 到该项目目录和 运行 没有 --global 标签的相同命令。