gpg签名数据失败 致命错误:无法写入提交对象 [Git 2.10.0]

719

我阅读了关于pretty属性在Git 2.10版本发布说明中的几篇文章。通过阅读这些文章,将git升级到2.10.0,并对全局.gitconfig进行了更改,结果如下 -

[filter "lfs"]
    clean = git-lfs clean %f
    smudge = git-lfs smudge %f
    required = true
[user]
    name = xyz
    email = abc.def@gmail.com
    signingkey = AAAAAAA
[core]
    excludesfile = /Users/xyz/.gitignore_global
    editor = 'subl' --wait
[difftool "sourcetree"]
    cmd = opendiff \"$LOCAL\" \"$REMOTE\"
    path = 
[mergetool "sourcetree"]
    cmd = /Applications/SourceTree.app/Contents/Resources/opendiff-w.sh \"$LOCAL\" \"$REMOTE\" -ancestor \"$BASE\" -merge \"$MERGED\"
    trustExitCode = true
[alias]
    lg = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative
[color "diff"]
    old = red strike
    new = green italic

但现在我尝试使用签署我的提交的方式

git commit -a -S -m "message"

我看到了以下错误信息 -

您需要输入密码来解锁用户“XYZ(数字签名)”的秘密密钥

2048位RSA密钥,ID为AAAAAAAA,创建于2016年07月01日

错误:gpg无法签署数据致命错误:无法编写提交对象

注意 - 我仍然可以使用git commit -a -m“message”提交更改 有没有办法克服这个问题?或者需要在gpg配置中进行任何更改以适应git的升级?

更新 1

在阅读Is there a way to "autosign" commits in Git with a GPG key?之后,我希望进一步提高其实用性。我已经使用配置了密钥。

git config --global user.signingkey ED5CDE14(with my key) 
git config --global commit.gpgsign true

很明显,无论如何都会出现相同的错误。


5
我遇到了类似的问题。我在Windows上卸载了Git 2.8(git-scm),然后安装了2.10版本。现在每次使用“-S”命令时都会出现“gpg failed to sign the data”的错误提示。在2.8版本中,我可以顺利地签署提交记录,但现在不知道出了什么问题。 - Illuminator
11
添加 user.signingkey 解决了我的问题,很奇怪。 - Xavier Ho
3
有点讽刺的是,我更换了电脑重新设置一切,结果却在寻找自己的问题时发现没有一个建议的解决方案足够简单干净,可以让我轻松开始。 - Naman
60
尝试运行 gpgconf --kill gpg-agent 命令,详情请见此处讨论 - Lounge9
17
请确保 git config --get-all user.namegit config --get-all user.email 与用于签名的密钥相同,可以通过 gpg -K --keyid-format SHORT 进行检查。 - Max Vorobjev
显示剩余10条评论
51个回答

-2

使用以下命令检查是否启用了gpg

git config -l | grep gpg

如果返回 true,则运行以下命令以禁用它。
git config --global --unset commit.gpgsign

在成功运行上述命令后,您应该能够运行git commit命令。


10
这将禁用所有 GPG 签名,但并未解决问题。 - anon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接