Kleopatra与MinGW64中gpg冲突
在代码提交时候,需要对commit进行签名。
若提交代码时报错:
gpg: skipped “3BECCAC113E09805”: No secret key
-
1一般会下载Git(自带Git Bash和MinGW64),可以在里面用命令行去生成公私密钥,然后告诉Github Desktop使用哪个签名去提交。
-
2如果使用了Kleopatra(GnuPG)的话,会出现图形化界面,方便管理公私密钥,他和上面Git中自带的是冲突的,也就是说Github Desktop会调用系统的Git,然后根据
.gitconfig
文件去选择对应的gpg.exe
,利用对应的gpg.exe
找到对应的密钥ID,进行签名。
解决:
所以在Git Bash中创建密钥,一般是调用了1中的MinGW64生成的,而Kleopatra是由GnuPG生成的,因此两边的密钥不互通。具体就是检查gitconfig
中的路径,或者使用命令指定:
# 在Git中设置gpg的启动路径
git config --global gpg.program "D:\Softwares\GnuPG\bin\gpg.exe"
指定后,如果使用的是Kleopatra,就不用去Git Bash中 gpg --list-keys
列出所有的 GPG 密钥了,忽略另一个就好。