Mac上的git - gpg:错误:gpg无法签署数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mac上的git - gpg:错误:gpg无法签署数据相关的知识,希望对你有一定的参考价值。

我从brew安装了GPG。

brew install gpg

这是gnupg2-2.0.30_2。

当我提交时,我收到一条错误消息:

You need a passphrase to unlock the secret key for
user: "Max Mustermann (mycomment) <mm@test.de>"
2048-bit RSA key, ID 1111AAAA, created 2017-01-05 

error: gpg failed to sign the data
fatal: failed to write commit object

我使用了命令:

gpg --list-secret-keys | grep ^sec

它让我回来:

sec   2048R/1111AAAA 2017-01-05

然后我用这个命令:

git config --global user.signingkey 1111AAAA

commit给了我相同的错误消息。

我怎么解决这个问题?

答案

如果你没有得到密码短语的提示(你没有提到你是否......),解决方案可能只是安装一个程序来促进这一点。最常见的是pinentry

brew install pinentry-mac

所以安装并重新尝试可能会让事情变得有效。但如果没有,另一件事就是确保git使用/找到合适的GPG程序。这些天你真的应该使用gpg2,所以如果你还没有安装,请执行:

brew install gnupg2

然后,告诉git这是GPG计划想要的,这个:

git config --global gpg.program gpg2

此时,再次尝试提交,事情可能会奏效。

但如果没有,那试试这个:

echo "pinentry-program /usr/local/bin/pinentry-mac" >> ~/.gnupg/gpg-agent.conf

......然后再试一次。

注意:根据下面的一些注释,为了使此更改生效,您显然可能需要在进行更改后重新启动。

另一答案

对于在MacOS计算机上遇到此问题的任何人,请尝试以下方法:

  1. brew uninstall gpg
  2. brew install gpg2
  3. brew install pinentry-mac(如果需要)
  4. gpg --full-generate-key使用算法创建密钥。
  5. 通过执行:gpg --list-keys获取生成的密钥
  6. 在这里设置密钥git config --global user.signingkey <Key from your list>
  7. git config --global gpg.program /usr/local/bin/gpg
  8. git config --global commit.gpgsign true
  9. 如果你想将你的Key导出到GitHub,那么:gpg --armor --export <key>并将这个键添加到GPG键的GitHub:https://github.com/settings/keys(包含START和END行)

如果问题仍然存在:

test -r ~/.bash_profile && echo 'export GPG_TTY=$(tty)' >> ~/.bash_profile

echo 'export GPG_TTY=$(tty)' >> ~/.profile

如果问题仍然存在:

安装https://gpgtools.org并通过按菜单栏中的Sign键对您使用的密钥进行签名:Key-> Sign

如果问题仍然存在:

转至:您的全局.gitconfig文件,在我的情况下位于:/Users/gent/.gitconfig并修改.gitconfig文件(请确保电子邮件和名称与您在生成密钥时创建的文件相同):

[user]
	email = gent@youremail.com
	name = Gent
	signingkey = <YOURKEY>
[gpg]
	program = /usr/local/bin/gpg
[commit]
	gpsign = true
	gpgsign = true
[filter "lfs"]
	process = git-lfs filter-process
	required = true
	clean = git-lfs clean -- %f
	smudge = git-lfs smudge -- %f
[credential]
	helper = osxkeychain
另一答案

您的问题假定您确实要签署您的提交。如果不这样做,修复非常简单 - 关闭提交签名:

git config --global commit.gpgsign false

在我的情况下,我继承了一些默认的git配置设置,其中包括提交签名。

以上是关于Mac上的git - gpg:错误:gpg无法签署数据的主要内容,如果未能解决你的问题,请参考以下文章

GPG 签署所有没有存储的 git 提交

Git之签署工具GPG的安装和使用

如何在Xcode源代码控制中使用GPG签名?

gpg 未能签署数据致命:未能写入提交对象 [Git 2.10.0]

Git之深入解析如何通过GPG签署和验证工作

在 Windows 上使用 Git 的 GPG 代理上的 IPC 错误