[英]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
。
对我来说,取消设置并再次设置签名密钥就像一个魅力。
如果您正在更改另一个签名密钥或 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.