我刚开始使用git,我通过自制软件安装git和gpg。 由于某种原因,当我提交git时,我得到了这个错误 我看了很多关于这个话题的stackoverflow问题,但没有一个对我有用。 如何修复此错误以成功上传?

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

当前回答

你的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签名重新添加到组合中。

其他回答

你的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密钥过期时,也会发生此错误。生成一个新密钥并将其添加到Git中应该可以解决这个问题。

我刚刚在VSCode更新时遇到了这个问题。我认为GPG代理挂起了,因为该命令在出错之前运行了几秒钟。运行gpgconf——kill gpg-agent重置并为我修复了它。

解决方案:

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重新启动代理,您应该可以运行了!

为我解决这个问题的方法是确保密钥的名称与我的git用户名匹配。我猜邮件也要匹配。这可能与我在Mac上使用GPG钥匙串有关。不确定。

当我填写这个时,我以为我是在命名密钥,但我猜它是在询问我的名字(git用户名)。