当前位置: 首页 > 知识库问答 >
问题:

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

殷建弼
2023-03-14
[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"

2048位RSA密钥,ID AAAAAAA,创建于2016-07-01

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

注意-我仍然可以使用git commit-a-m“message”提交更改

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

共有1个答案

孟佑运
2023-03-14

我在OSX中遇到了这个问题。

看起来像是一个gpg更新(brew)更改为gpggpg1的位置,您可以更改git查找gpg的二进制文件:

git config --global gpg.program gpg1

如果您没有gpg1:brew安装gpg1

brew upgrade gnupg  # This has a make step which takes a while
brew link --overwrite gnupg
brew install pinentry-mac
echo "pinentry-program /usr/local/bin/pinentry-mac" >> ~/.gnupg/gpg-agent.conf
killall gpg-agent
echo "test" | gpg --clearsign  # on linux it's gpg2 but brew stays as gpg

您现在应该可以再次使用git签名了!
值得注意的是,您需要:

git config --global gpg.program gpg  # perhaps you had this already? On linux maybe gpg2
git config --global commit.gpgsign true  # if you want to sign every commit

注意:在运行签名提交后,可以通过以下方式验证其签名:

git log --show-signature -1

其中包括上次提交的gpg信息。

 类似资料:
  • 我正在尝试在OS X Mojave上启用提交签名。 错误是: 我尝试的是: 工作正常(见下文),未安装或 安装了GPG密钥链并添加了一个新密钥(甚至添加了一个单独的仅限符号的子密钥whithin) 已安装 工作正常(为文件生成新的.asc文件,为纯文本输出文本) 我调查并尝试了各种选择的问题: gpg对数据签名失败致命:写入提交对象失败[Git 2.10.0] git错误-gpg对数据签名失败 我

  • 我从brew安装了GPG。 它是gnupg2-2.0。30_2。 当我提交时,确实会收到一条错误消息: 我使用命令: 它给了我: 然后我使用了这个命令: 提交会返回相同的错误消息。 我怎样才能解决这个问题?

  • 我有麻烦签署提交。使用以下git配置: 我被告知只包含密钥的前八个字符。 分阶段后,在,我收到以下错误: 似乎大多数遇到此错误的用户都在Mac电脑上,需要进行一些额外的设置。但我在使用Kali Linux。 有什么建议吗?

  • 我使用PDFBox在JAVA中实现了签名功能。 我的代码的签名部分是: 如果我使用用keytool命令生成的测试自动签名证书,一切都会正常工作。 问题是,当我用一个真正经过认证的现有证书尝试这段代码时,我得到了一个例外: 我不知道为什么这行不通... 任何帮助都将不胜感激!=)

  • GPG 无法签名数据 如果当你在对 tag 或者 commit 签名时遇到以下提示: error: gpg failed to sign the data error: unable to sign the tag 首先,物理插拔一下 Yubikey 并确保安全卡状态可以被正确的列出: ❯ gpg --card-status 如果你看到: PIN retry counter : 0 0 3 这意味

  • 正在签署的摘要到底是什么?如果签名嵌入到提交对象中,那么它很难是提交哈希本身-那么它是树哈希吗?还是别的什么?这是否意味着提交消息没有签名并且可能被篡改? 注意:我在这里使用一个用--object-type sha256初始化的git存储库来使用基于SHA-256的哈希值(默认情况下git使用SHA-1),但我的问题也适用于带有SHA-1哈希值的git存储库(以防gpg签名对SHA-1和SHA-2