最近由于进行了系统重装,重新安装了开发环境,其中有涉及对 Git 和 GnuPG 的重新安装配置。
系统环境为 Windows 11 x64。
以下可能只是其中一种情况以及它的解决方法,不一定适合所有类似情况。
按照通常过程使用 gpg.exe 生成 Key 后,将 ID 引入 Git 配置项中,比如在 Git 全局配置中设置中设置:
git config --global user.signingkey "**********"
git config --global commit.gpgsign true
以及其他设置(如名称和邮件地址)后,Git 在本地提交代码后提示类似问题:
gpg: skipped "************": No secret key
gpg: signing failed: No secret key
error: gpg failed to sign the data
fatal: failed to write commit object
使用
gpg --list-secret-keys --keyid-format=long
输出结果中可以找到星号处的 Key ID,说明 Key 确实可以通过 gpg 找到。
我碰到的问题是 Git 可能没有找到正确的 gpg.exe 文件位置,通过设置以下设置方法手工指定 gpg 的位置:
git config --global gpg.program "X:\{SOMEPATH}\GnuPG\bin\gpg.exe"
在做完如上设置后,Key 可正常根据 ID 找到。
参考资料:
Setting Up GPG on Windows (The Easy Way) | Tower Blog
How to sign your git commits | endjin - Azure Data Analytics Consultancy UK