跳到内容

给新电脑配置GIT的GPG认证并补救已经提交的未签名PR

更新于
约 3 分钟阅读
·
341 字
GIT操作
Coding
#GPG #Git #PR #ForcePush

配置GPG认证

以下配置均在Git Bash中进行:

  1. gpg --full-generate-key 生成新的GPG密钥
  2. 选择RSA和RSA,设置密钥大小为4096,设置过期时间为0(永不过期)
  3. 输入名字和邮箱(必须与GitHub账户绑定的邮箱一致)
  4. gpg --list-secret-keys --keyid-format=long 查看生成的密钥
  5. 复制sec rsa4096/你的GPG密钥ID 2024-01-01 [SC] 中的GPG密钥ID部分(例如ABCD1234EF567890
  6. gpg --armor --export <你的GPG密钥ID> 导出公钥
  7. 将导出的公钥复制到GitHub账户的SSH和GPG密钥设置中
  8. git config --global user.signingkey <你的GPG密钥ID> 配置Git使用GPG密钥
  9. git config --global commit.gpgsign true 配置Git自动签名提交
  10. git config --global gpg.program "C:\Program Files\Git\usr\bin\gpg.exe" 配置Git使用正确的GPG程序路径

认证PR中未认证的Commit

  1. git reset --soft HEAD~1 回退到上一个提交
  2. 去Github Desktop里签名并提交
  3. git push --force-with-lease origin <你的分支名> 强制推送到远程分支

4月15日后记

过了几天我在Github Desktop尝试提交新的Commit的时候,遇到了这样的报错

error: gpg failed to sign the data
gpg: error running '/usr/lib/gnupg/keyboxd': probably not installed
gpg: failed to start keyboxd '/usr/lib/gnupg/keyboxd': Configuration error
gpg: can't connect to the keybodx: Configuration error
gpg: error opening key DB: No Keybox daemon running
pgp: skipped "XXXXXXXXXX": Input/output error
[GNUPG:] INV_SGNR 0 XXXXXXXXXX
[GNUPG:] FAILURE sign XXXXXXXX
gpg: signing failed: Input/output error

fatal: failed to write commit object

其实是没有安装配置GPG4Win导致的,应该去Gpg4win官网下载安装,全点下一步默认配置就行。

安装完成后打开Git Bash,修改GPG程序路径:

git config --global gpg.program "C:/Program Files/GnuPG/bin/gpg.exe"

然后就可以正常签名和提交了。

CC BY-NC-SA 4.0

非商业转载请注明出处,商业转载请联系作者获得授权。

For non-commercial use, please indicate the source. For commercial use, please contact the author for authorization.

View license

评论