为git标记生成一个GPG密钥

我试图使用git命令行在GitHub中创build签名标记。 我使用(样本)用户名Full Name (skytreader) <fullname@gmail.com>生成了一个GPG密钥。 完成之后,我尝试创build一个签名标记 。 但是,我得到以下错误:

 gpg: skipped "full <fullname@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 

我想我只需要用指定的用户名创build另一个键。 但是,input“full”这个名字, gpg抱怨我的名字至less要有5个字符。

我如何使用这个键与GIT?

我是否改变了用户使用GPG签署我的标签的用户名,这样我就能得到至less5个字符的真实姓名?

提交者名称位于~/.gitconfig文件中。 把这个条目改成一个真实的名字(无论如何你都要这么做)。 你可以在你最喜欢的编辑器中编辑文件,或者只发出:

 git config --global user.name "<name>" 

首先,您需要检查您的ID是否有gpg密钥。

 $ gpg --list-key 

如果你有应该出现这样的事情:

  1. pub 2048R / 6AB3587A 2013-05-23
  2. uid xxx(gpg for xxx)
  3. sub 2048R / 64CB327A 2013-05-23

如果没有gpg密钥。 你应该创build

 $ gpg --gen-key 

接下来你有这个输出:

gpg(GnuPG)2.0.14; 版权所有(C)2009自由软件基金会,这是自由软件:您可以自由更改和重新分配它。 没有担保,在法律允许的范围内。

请select你想要的密钥types:

  1. (1)RSA和RSA(默认)
  2. (2)DSA和Elgamal
  3. (3)DSA(仅限符号)
  4. (4)RSA(仅限符号)

您的select? RSA密钥的长度可能在1024到4096之间。 你想要什么密码? (2048)
请求的密钥大小是2048位
请指定密钥的有效期限。

  0 = key does not expire <n> = key expires in n days <n>w = key expires in n weeks <n>m = key expires in n months <n>y = key expires in n years 

密钥是有效的? (0)
密钥根本不会过期
它是否正确? (y / N)y

 GnuPG needs to construct a user ID to identify your key. Real name: xxx Email address: xxx@example.com Comment: gpg for xxx You selected this USER-ID: "xxx(gpg for xxx) <xxx@example.com>" Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O You need a Passphrase to protect your secret key. can't connect to `/xxx/.gnupg/S.gpg-agent': No such file or directory We need to generate a lot of random bytes. It is a good idea to perform some other action (type on the keyboard, move the mouse, utilize the disks) during the prime generation; this gives the random number generator a better chance to gain enough entropy. 

如果你有一个已经生成的密钥,你可以告诉git使用该特定的密钥,而不用担心你的git用户ID(名字+电子邮件)和GPG密钥的ID之间的匹配。 user.email您应该让您的git user.email匹配您的GPG密钥上的某个电子邮件,以便签署标签或提交对其他用户有用。

要在您的计算机上设置全局使用的密钥,请使用以下命令设置您的git全局configuration:

 git config --global user.signingkey 6AB3587A 

或者,您可以只为当前的存储库设置user.signingkey

 git config user.signingkey 6AB3587A