繁体   English   中英

使用 Git 签名提交不要求我的密码

[英]Signing commits with Git doesn't ask for my passphrase

我试图用命令git commit -S来签署我的提交,但它失败了,没有提示我输入我的 GPG 密钥的密码。

错误是:

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

我注意到如果我在git commit -S之前运行以下命令:

gpg -o /dev/null --local-user MY_KEY_ID -as <(echo 1234) && echo "The correct passphrase was entered for this key"

...一切正常,我的提交已正确签名。 我认为这是因为我的密码被缓存了,但这不是我期望的行为。

我希望 Git 每次我想签署提交或标签时都会提示我输入密码。

在这个问题上找到了“解锁我的密钥”的命令: How to use gpg command-line to check passphrase is correct

您可能需要告诉pinentry ,gpg用来提示输入密码的软件以及提示您输入密码的位置。

export GPG_TTY=$(tty)
git commit -S

如果GPG_TTY ,我建议在您的Shell的rc文件中导出GPG_TTY

有关GPG_TTY gpg-agent文档

对我来说,取消设置并再次设置签名密钥就像一个魅力。

如果您正在更改另一个签名密钥或 git 突然停止提示输入密码,这将起作用。

// remove signing key
git config --unset user.signingkey

// add new signing key
git config user.signingkey SECRETKEYLONGID

// tell git to automatically sign every commit
git config commit.gpgsign true

// commit as usual
git commit -m "commit message"

Git 说明热获取签名密钥长 ID。

就是这样..我希望它能派上用场。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM