Git GPG错误签名标签

use*_*871 4 git gnupg

在谈到Git时,我有点像新秀.所以我决定阅读Scott Chacon的Pro Git.BTW好书,强烈推荐它.

无论如何得到了关于签名标签的部分.要使用GPG对标签进行签名,您必须设置私钥.但是,当我跑:

git tag -s v1.6 -m "my signed 1.6 tag"
Run Code Online (Sandbox Code Playgroud)

我得到以下内容:

C:\Users\Name\Desktop\git>git tag -s v1.6 -m "my signed 1.6 tag"
gpg: error loading `iconv.dll': The specified module could not be found.

gpg: please see http://www.gnupg.org/download/iconv.html for more information
gpg: skipped "Name <name@gmail.com>": secret key not available
gpg: signing failed: secret key not available
error: gpg failed to sign the data
error: unable to sign the tag
Run Code Online (Sandbox Code Playgroud)

所以,我完成了错误消息告诉我要做的事情,然后转到链接并按照说明进行操作.我将iconv.dll复制到包含gpg.exe(\ Git\bin)的文件夹中.再次执行命令并得到:

C:\Users\Name\Desktop\git>git tag -s v1.6 -m "my signed 1.6 tag"
gpg: skipped "Name <name@gmail.com>": secret key not available
gpg: signing failed: secret key not available
error: gpg failed to sign the data
error: unable to sign the tag
Run Code Online (Sandbox Code Playgroud)

编辑:

当我尝试列出我的密钥时,我收到此错误???

Name@NAME-PC ~
$ gpg --list-secret-keys
gpg: keyblock resource `c:/Users/Name/.gnupg\secring.gpg': file open error
gpg: keyblock resource `c:/Users/Name/.gnupg\pubring.gpg': file open error
gpg: fatal: c:/Users/Name/.gnupg: directory does not exist!
secmem usage: 0/0 bytes in 0/0 blocks of pool 0/32768
Run Code Online (Sandbox Code Playgroud)

Von*_*onC 7

您可以使用像gpg4win这样的gpg GUI初始化您的gnupg环境(密钥),遵循本教程,或者(更新)官方gpg4win文档" Gpg4win for Novices ".

私钥创建

请注意,此博客文章添加了以下警告:

我安装了Gpg4win,它安装了一个很好的GUI来管理密钥和GPG命令行界面.
由于我反复尝试使用GUI(GNU Privacy Assistant - 密钥管理器)来创建我的密钥,因此我对该过程的无知很清楚.该GUI似乎创建了有效的密钥,但是它存储相关的密钥部分文件的位置不是GPG命令行期望找到它们的位置.

(注意:可能在C:\Users\Name\AppData\Roaming\gnupg,目录被命名gnupg而不是.gnupg)

相反,请务必使用命令行客户端.从...开始:

gpg --gen-key
Run Code Online (Sandbox Code Playgroud)

如果密钥创建失败,您可能需要手动创建目录c:users<USER>.gnupg,GPG显然不会自己创建目录.

cd C:\Users\Name 
mkdir .gnupg
xcopy C:\Users\Name\AppData\Roaming\gnupg .gnupg
Run Code Online (Sandbox Code Playgroud)

我沿途看到的错误是

gpg: no writable public keyring found
Run Code Online (Sandbox Code Playgroud)

和:

signing failed: secret key not available
Run Code Online (Sandbox Code Playgroud)

注意:一旦你的gnupg到位,如果你仍然有错误信息,请在签名时添加key-id你想要使用的(gnupg):

git tag -u 'key-id' -s -m "some comment" some-tag 
Run Code Online (Sandbox Code Playgroud)

  • 如果你仍然想使用GUI,或者已经创建了一个关键的它,您可以通过MKLINK /DC:\Users\NAME\.gnupgÇ链接的目录:\ Users \用户名\ AppData的\漫游\的GnuPG (2认同)