我参考了几篇关于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-bit RSA key, ID AAAAAAAA, created 2016-07-01
错误:GPG数据签名失败致命:写提交失败
对象
注意-我仍然可以使用git commit -a -m "message"来提交更改
有办法克服同样的问题吗?或者在gpg配置中需要做任何改变以适应git的升级?
更新1
还寻求进一步的有用性,以下是是否有一种方法在Git中使用GPG密钥“自动签名”提交?我已经配置了密钥使用
git config --global user.signingkey ED5CDE14(with my key)
git config --global commit.gpgsign true
很明显得到了相同的错误。
经过大量搜索,我发现gpg密钥是我的情况下的问题。
要检查gpg键是否为您的问题,首先检查以下输出:
GIT_TRACE=1 git commit -m 'message'
如果出现问题,你会看到如下内容:
10:37:22.346480 run-command.c:637 trace: run_command: gpg --status-fd=2 -bsau <your GPG key>
它显示我的名字和电子邮件在GPG密钥这里,但这应该有密钥。您可以尝试运行gpg——status-fd=2 -bsau <您的gpg密钥>
要更新正确的密钥,请执行以下操作:
检查密钥使用:GPG——list-secret-keys——keyid-format=long
它应该有以下输出:
/Users/hubot/.gnupg/secring.gpg
------------------------------------
sec 4096R/3AA5C34371567BD2 2016-03-10 [expires: 2017-03-10]
uid Hubot
ssb 4096R/42B317FD4BA89E7A 2016-03-10
然后更新密钥使用:
git config --global user.signingkey 3AA5C34371567BD2
现在再次检查提交,如果关键字是问题,它应该成功。您需要设置密码短语来更新密钥,您可以使用GitHub文档进行更新。
更多详情见:https://gist.github.com/paolocarrasco/18ca8fe6e63490ae1be23e84a7039374
上面的答案很好,但对我来说并不管用。解决我的问题的方法是同时导出公钥和密钥。
列出要导出的机器上的键
$ gpg --list-keys
/home/user/.gnupg/pubring.gpg
--------------------------------
pub 1024D/ABCDFE01 2008-04-13
uid firstname lastname (description) <email@example.com>
sub 2048g/DEFABC01 2008-04-13
导出密钥
$ gpg --output mygpgkey_pub.gpg --armor --export ABCDFE01
$ gpg --output mygpgkey_sec.gpg --armor --export-secret-key ABCDFE01
去机器,我们正在导入和导入
$ gpg --import ~/mygpgkey_pub.gpg
$ gpg --allow-secret-key-import --import ~/mygpgkey_sec.gpg
宾果邦戈,你完蛋了!
参考:https://www.debuntu.org/how-to-importexport-gpg-key-pair/
ps.我的钥匙最初是在bootcamp windows 7上制作的,我把它们导出到我的mac air上(相同的物理机器,虚拟不同)
按照下面的url设置签名提交
https://help.github.com/en/articles/telling-git-about-your-signing-key
如果还在
GPG签署数据失败致命:
日志含义写提交对象失败
这不是git的问题,而是GPG的问题
遵循以下步骤
gpg——版本
回显"test" | GPG—clearsign
如果显示:
gpg: signing failed: Inappropriate ioctl for device
gpg: [stdin]: clear-sign failed: Inappropriate ioctl for device
然后使用export GPG_TTY=$(tty)
然后再次尝试echo“test”| GPG—clearsign
得到PGP签名。
Git config -l | grep GPG
gpg.program=gpg
commit.gpgsign=true
应用git commit -m "commitMsz"