40

我正在尝试使用 git 命令行在 GitHub 中创建签名标签。我生成了一个带有(示例)用户名的 GPG 密钥Full Name (skytreader) <fullname@gmail.com>。完成后,我尝试创建一个签名标签。但是我收到以下错误:

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

我想我只需要使用指定的用户名创建另一个密钥。但是,输入名称“full”,gpg抱怨我的名字应该至少有 5 个字符长。

如何在 git 中使用此密钥?

我是否更改了 git 用于使用 GPG 签署我的标签的用户名,以便我获得至少 5 个字符长的真实姓名?

4

3 回答 3

41

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

$ gpg --list-key

如果你有应该出现这样的东西:

  1. 酒馆 2048R/6AB3587A 2013-05-23
  2. uid xxx(用于 xxx 的 gpg)
  3. 子 2048R/64CB327A 2013-05-23

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

$ gpg --gen-key

接下来你有这个输出:

gpg (GnuPG) 2.0.14;版权所有 (C) 2009 Free Software Foundation, Inc. 这是免费软件:您可以自由更改和重新分发它。在法律允许的范围内,不提供任何保证。

请选择您想要的钥匙类型:

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

你的选择?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)
密钥根本不会过期这
是正确的吗?(是/否)是

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.
于 2013-05-23T23:49:03.527 回答
16

提交者名称位于您的~/.gitconfig文件中。将该条目更改为真实姓名(无论如何,这就是您想要提交的方式)。您可以在您喜欢的编辑器中编辑该文件,或者直接发出:

git config --global user.name "<name>"
于 2012-08-21T20:04:57.113 回答
8

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

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

git config --global user.signingkey 6AB3587A

或者,您可以user.signingkey仅为您所在的当前存储库设置:

git config user.signingkey 6AB3587A
于 2016-06-08T14:37:52.430 回答