我刚开始使用git,我通过自制软件安装git和gpg。 由于某种原因,当我提交git时,我得到了这个错误 我看了很多关于这个话题的stackoverflow问题,但没有一个对我有用。 如何修复此错误以成功上传?
error: gpg failed to sign the data
fatal: failed to write commit object
我刚开始使用git,我通过自制软件安装git和gpg。 由于某种原因,当我提交git时,我得到了这个错误 我看了很多关于这个话题的stackoverflow问题,但没有一个对我有用。 如何修复此错误以成功上传?
error: gpg failed to sign the data
fatal: failed to write commit object
当前回答
如果你使用的是windows powershell(5.1+),我想这个命令可以工作。
使用此命令获取GPG程序路径。
(Get-Command gpg).Path
在获取路径之后,复制路径。 使用这个命令
git config gpg.program <your path>
试着做出承诺。 编码快乐! !
其他回答
你的git以某种方式配置为GPG签署每次提交。使用GPG签名不需要使用git提交或推送。它很可能会给出错误,因为您的gpg签名机制还没有配置。
如果您是git的新手,请尝试在一开始不使用GPG签名的情况下让它工作,然后在确实需要时添加签名。
你可以通过以下方法验证git是如何配置gpg的:
git config -l | grep gpg
它可以产生零或多行,包括:
commit.gpgsign=true
如果“提交。“Gpgsign”为真,则启用了GPG签名。禁用它:
git config --global --unset commit.gpgsign
然后尝试再次运行提交。现在它应该在没有gpg签名的情况下运行。在基本的git工作之后,您应该尝试将gpg签名重新添加到组合中。
什么是gpg: GNU Privacy Guard
用法:
GPG是确保双方安全通信的一种极好的方法。它允许敏感信息在不安全的网络上轻松共享。
简单的解决方案:
步骤1:检查密钥是否过期请做
gpg -K——keyid-format SHORT
步骤2:如果它没有过期
Git配置——global user.signingkey
我正在使用它。它支持zsh和工作在Windows子系统Linux:
export GPG_TTY=$(tty)
其他用户已经确认以上是MacOS(例如Catalina 10.15.7)所需的唯一更改。对于mac,将以上内容添加到~/.zshrc。
在使用WSL2的Windows中的Linux容器中也可以工作。
我解决了安装brew install gpg2然后做git配置——global gpg的问题。程序gpg2
解决方案:
Issue: Disabled loopback pinentry mode
要解决这个问题,你需要在~/.gnupg/gpg.conf中启用环回pinentry模式:
cat <<'EOF' >> ~/.gnupg/gpg.conf
use-agent
pinentry-mode loopback
EOF
还有~/.gnupg/gpg-agent.conf(如果文件不存在就创建文件):
cat <<'EOF' >> ~/.gnupg/gpg-agent.conf
allow-loopback-pinentry
EOF
然后使用echo RELOADAGENT | gpg-connect-agent重新启动代理,您应该可以运行了!
源