我最近尝试了Linux的Windows子系统,当我试图用最近生成的GPG密钥签署git提交时,它吐了出来,
verticalfile30@DESKTOP-U284V9I:~/cpo/wsltest$ git commit -S -m "gpg signing"
error: gpg failed to sign the data
fatal: failed to write commit object
我已经使用git很长时间了,我知道我必须在git上设置本地或全局变量才能使用我的GPG密钥。
在第一个错误之后,我试图生成另一个键,但也不起作用,包括子键。
我的GPG在RSA和RSA(默认)中加密。
我尝试过使用有关帮助的文章。github。但是没有用。
(以下是一些具体来源。)https://help.github.com/en/articles/telling-git-about-your-signing-key
https://help.github.com/en/articles/signing-commits
这是大部分的终端日志
verticalfile30@DESKTOP-U284V9I:~/cpo/wsltest$ git config --global commit.gpgsign true
verticalfile30@DESKTOP-U284V9I:~/cpo/wsltest$ gpg2 --list-secret-keys --keyid-format LONG
gpg: checking the trustdb
gpg: marginals needed: 3 completes needed: 1 trust model: pgp
gpg: depth: 0 valid: 2 signed: 0 trust: 0-, 0q, 0n, 0m, 0f, 2u
gpg: next trustdb check due at 2021-08-22
/home/verticalfile30/.gnupg/pubring.kbx
---------------------------------------
sec rsa4096/498F47808959B459 2019-08-23 [SC] [expires: 2021-08-22]
A533C851D2905FC63C161831498F47808959B459
uid [ultimate] Vert Simon (Key#3) <stopmotion45c@gmail.com>
ssb rsa4096/E4E65BE559FFBE2C 2019-08-23 [E] [expires: 2021-08-22]
sec rsa4096/B3C88EE54DC15CC9 2019-08-23 [SC]
87F5399E6BFEF88C1C64794CB3C88EE54DC15CC9
uid [ultimate] Vert S (Sop) <stopmotion45c@gmail.com>
ssb rsa4096/E868623210106F9D 2019-08-23 [E]
verticalfile30@DESKTOP-U284V9I:~/cpo/wsltest$ git config --global user.signingkey E868623210106F9D
verticalfile30@DESKTOP-U284V9I:~/cpo/wsltest$ git commit -S -m "gpg signing"
error: gpg failed to sign the data
fatal: failed to write commit object
verticalfile30@DESKTOP-U284V9I:~/cpo/wsltest$ git config --global user.signingkey B3C88EE54DC15CC9
verticalfile30@DESKTOP-U284V9I:~/cpo/wsltest$ git commit -S -m "gpg signing"
error: gpg failed to sign the data
fatal: failed to write commit object
许多在线来源,以及其他关于堆栈溢出的问题,最后都说了同样的话,设置全局变量。有什么事情我忘记了或弄错了吗?谢谢
如果您使用Kleopatra在Windows中管理您的GPG密钥,您可以将以下内容添加到您的WSL环境中的~/. gitconfig中(相应地更新您的路径):
[gpg]
program = /mnt/c/Program Files (x86)/GnuPG/bin/gpg.exe
添加此项后,会像往常一样提示输入GPG密钥的密码。
背景:在使用挂载卷时,使用Docker对我来说非常慢。我决定在Ubuntu WSL环境目录(即~/项目/my_project)中部署存储库,并使用Docker WSL2支持从那里向上部署容器。我使用Visual Studio Code,这样我就可以直接将编辑器打开到WSL环境中并从那里工作。然而,我失去了签署我的promise的能力。因此,上面的解决方案允许我保留现有的工作流程。
按照以下url设置签名提交https://help.github.com/en/articles/telling-git-about-your-signing-key
如果仍然获取gpg无法对数据进行签名致命:无法写入提交对象
这不是git的问题,这是GPG的问题
>
gpg--版本
echo“test”| gpg--clearsign
如果显示:
gpg: signing failed: Inappropriate ioctl for device
gpg: [stdin]: clear-sign failed: Inappropriate ioctl for device
然后使用export GPG\u TTY=$(TTY)
然后再试一次echo"test"|gpg--clearmark
,PGP签名在其中。
输出:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512
test
-----BEGIN PGP SIGNATURE-----
iLMEAQEKAB0WIQS2V0SFHi18psvDbo7uFF+LP7qc1gUCYLjB2QAKCRDuFF+LP7qc
1r5LBACB1m3Lpl21379qAvVamWcn9isdgdg34t34t43t34t34t434yGQHqikxWL7A5
Ls7giKZYscb30o0rkY6I1W9MjBBW96R2pnaYsioFpsf434dfg54rfdgfdgdfgdfpaIoU3k
JKrYxR7yMjqUv0a2jE+97kh+bSuzqwIkMHyikbABI90lY+4OLw==
=UHKx
-----END PGP SIGNATURE-----
输出:
commit.gpgsign=true
gpg.program=gpg
tag.gpgsign=true
gpg未能对数据进行签名致命:未能写入提交对象[Git 2.10.0]
微软/WSL第4029期紧随其后
但在这种情况下,它是:
“我的密钥”具有密码短语,但没有输入密码短语的提示。
但后来我读到:
第3步是导出GPG\U TTY=$(TTY),它向TTY发送提示
输入我的密码后,一切正常。
示例:danhorst/dotfile
提交805a779,下面是gpg未能签署数据致命:未能写入提交对象[Git 2.10.0]。
我在Ubuntu上使用bash运行最新的稳定窗口,通过cmder wslbridge运行(我尝试直接通过bash运行,但错误相同)。移动到基于windows的react-native文件夹并尝试运行一些cli,如、、总是产生错误; 而令人惊讶的是,其他一些命令如npm可以正常启动... 国家预防机制将其打印出来;
我有一种字体在IE8和IE9以及所有其他浏览器中都能正常工作,但第二种字体只在IE9和其他浏览器中工作。在IE8中,我得到了一个错误: “CSS3111:@font-face遇到未知错误。” 我一直在四处看书,尝试了很多事情,但都没有运气。 我的代码是: 我试过用几个不同的生成器多次重新生成eot,玩过CSS,玩过头,玩过域,等等,但是看起来它们都很好。如前所述,相同的代码在相同的,只是指向不同的
我已经在ubuntu 14.10上安装了git版本2.1.0。 我已经创建了一个本地git存储库,现在我希望在ubuntu默认终端中用颜色突出显示我的分支。 我已经做了: 如何在Ubuntu中为Git控制台着色? 但这确实有帮助
我在尝试签署提交时遇到以下错误: 这是gpg--list secret keys--keyid format LONG的输出 钥匙在那儿 这是使用相同密钥的git config 知道出什么问题了吗?
正在签署的摘要到底是什么?如果签名嵌入到提交对象中,那么它很难是提交哈希本身-那么它是树哈希吗?还是别的什么?这是否意味着提交消息没有签名并且可能被篡改? 注意:我在这里使用一个用--object-type sha256初始化的git存储库来使用基于SHA-256的哈希值(默认情况下git使用SHA-1),但我的问题也适用于带有SHA-1哈希值的git存储库(以防gpg签名对SHA-1和SHA-2
有没有一种简单的方法可以让Git总是在创建的每个提交或标记上签名? 我试过这样的方法: 但这并没有成功。 我不想安装不同的程序来实现这一点。它容易做到吗? 只是一个附带的问题,也许提交不应该被签名,只有标签,我从来没有创建过,因为我为一个项目提交了单个提交,比如Homebrew,等等。