我在Git 2.10发行说明上关注了几篇关于漂亮属性的文章。通过将 git 升级到 2.10.0 并对全局进行更改,结果如下 -.gitconfig
[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"
我看到以下错误 -
你需要一个密码来解锁密钥
用户:“XYZ(数字签名)”
2048 位 RSA 密钥,ID AAAAAAAAA,创建于 2016-07-01
错误:gpg 未能签署数据致命:无法写入提交对象
注意- 我仍然可以使用git commit -a -m "message"
有没有办法克服同样的问题?或者需要在gpg
配置中进行任何更改以适应 git 的升级?
更新 1
还寻求进一步的用处,遵循有没有办法使用 GPG 密钥在 Git 中“自动签名”提交?. 我已经使用
git config --global user.signingkey ED5CDE14(with my key)
git config --global commit.gpgsign true
很明显,无论如何都会出现相同的错误。
我在 OSX 上遇到了这个问题。
这似乎是一个GPG更新(酿造)改为位置gpg
来gpg1
,你可以改变二元其中Git会查找了GPG:
git config --global gpg.program gpg1
如果你没有 gpg1: brew install gpg1
。
看起来 gpg1 已被弃用/ “轻轻地不再使用”,因此你实际上可能应该更新到 gpg2,不幸的是,这涉及更多步骤/一点时间:
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
第一部分安装 gpg2,后者是使用它所需的 hack。对于故障排除,请参阅此答案(尽管这是关于 linux 而不是 brew),它建议进行一个很好的测试:
echo "test" | gpg --clearsign # on linux it's gpg2 but brew stays as gpg
如果此测试成功(没有错误/输出包括 PGP 签名),则你已成功更新到最新的 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 信息。
将 gpg.program 设置为 /usr/local/bin/gpg (没有“1”)为我修复了它。
看来的更新
gnupg2
与brew
具有符号链接搞砸因而gpg
被删除,我使用了固定的联系brew link --overwrite gnupg2
。嗯...不起作用。仍然在登录 xcode 时出现错误。
killall gpg-agent && gpg-agent --daemon --use-standard-socket --pinentry-program /usr/local/bin/pinentry
终于为我修好了当我使用短 ID
git config --global user.signingkey <short Key ID>
😖时,它只对我 有用。