尝试使用Git提交时出现此错误.
gpg: skipped "name <name@mail.com>": secret key not available
gpg: signing failed: secret key not available
error: gpg failed to sign the data
fatal: failed to write commit object
Run Code Online (Sandbox Code Playgroud)
我已经生成了一个如下所示的新密钥,但它仍然会产生相同的错误
gpg --list-keys
~/.gnupg/pubring.gpg
--------------------------------
pub 2048R/35F5FFB2 2016-04-23
uid name (New key) <name@mail.com>
sub 2048R/112A8C2D 2016-04-23
Run Code Online (Sandbox Code Playgroud)
密钥与上述相同
我发现这 为git标记生成一个GPG密钥并按照步骤但它仍然不起作用,任何想法?
小智 63
您需要在使用密钥之前配置密钥.
git config user.signingkey 35F5FFB2
Run Code Online (Sandbox Code Playgroud)
如果要为每个存储库使用相同的密钥,请在全局声明它.
git config --global user.signingkey 35F5FFB2
Run Code Online (Sandbox Code Playgroud)
资料来源:https://git-scm.com/book/en/v2/Git-Tools-Signing-Your-Work
pau*_*del 53
对我有用的是补充
git config --global gpg.program "C:/Program Files (x86)/GNU/GnuPG/gpg2.exe"
Run Code Online (Sandbox Code Playgroud)
如果要查找gpg2.exe的完整路径:
where gpg2.exe
Run Code Online (Sandbox Code Playgroud)
Wak*_*eel 46
这在Windows 10上适用于我
__CODE__
这是我在修复之前得到的错误
__CODE__
alp*_*yax 12
我想完成所有这些答案,因为我有很多问题.
这些例子使用了--global
标志,但如果你想在本地使用这些东西,你可以删除它.
git config --global user.signingkey 35F5FFB2
Run Code Online (Sandbox Code Playgroud)
有些系统(Ubuntu的用于为例),可以gpg
和gpg2
在同一时间.您需要指定您将使用gpg2
git config --global gpg.program gpg2
Run Code Online (Sandbox Code Playgroud)
如果您在ssh环境中使用这些命令,则可能会出现以下错误:Inappropriate ioctl for device
或gpg: échec de la signature : Ioctl() inapproprié pour un périphérique
.这可以通过以下方式解决:
export GPG_TTY=$(tty)
Run Code Online (Sandbox Code Playgroud)
git config --global commit.gpgsign true
Run Code Online (Sandbox Code Playgroud)
Ant*_*ida 12
使用"C:\Program Files\Git\usr\bin\gpg.exe"
对我来说是解决方案。
不得不卸载克利奥帕特拉。有了它,它就不起作用了。
所以,总结一下;
不需要 kleopatra,使用 GIT 默认值代替。
git config --global user.signingkey Y0URK3Y
git config --global commit.gpgsign true
git config --global gpg.program "C:\Program Files\Git\usr\bin\gpg.exe"
Run Code Online (Sandbox Code Playgroud)
我遇到过在 Windows 10 机器上发生同样的情况。
$ git commit -m "Improve logging, imports and show time executed"
gpg: signing failed: Operation cancelled
gpg: signing failed: Operation cancelled
error: gpg failed to sign the data
fatal: failed to write commit object
Run Code Online (Sandbox Code Playgroud)
命令"C:\Program Files (x86)\GnuPG\bin\gpg.exe" --list-secret-keys --keyid-format LONG
和gpg --list-secret-keys --keyid-format LONG
哪里给了我完全不同的结果!
$ where gpg
C:\Program Files\Git\usr\bin\gpg.exe
C:\Program Files (x86)\GnuPG\bin\gpg.exe
Run Code Online (Sandbox Code Playgroud)
主要原因与之前的答案有关,但意义不同:
我希望这可以帮助任何偶然发现此消息的人,而之前的答案并未解决该问题。
您必须设置变量GNUPGHOME
。没有它,GnuPG 无法找到您的密钥。
# On unix add it to your path
# On windows it will usually be under:
<drive>:\Users\<username>\AppData\Roaming\gnupg
Run Code Online (Sandbox Code Playgroud)
在 Unix 上,它只是将它添加到路径中。
在 Windows 上,您必须打开控制面板并将其设置为
System Variable
Name: GNUPGHOME
Path: <drive>:\Users\<username>\AppData\Roaming\gnupg
Run Code Online (Sandbox Code Playgroud)
我最近发现了同样的secret key not available
错误,并且在此过程中还发现了更多错误,例如未找到 GPG 代理。
就我而言,我希望提交签名并在 GitHub 上显示为已验证。
以下是使其在 Windows 10 x64 上运行的完整步骤:
我winget
像这样安装了 GPG 2.3.1 :
C:\> winget install GnuPG.GnuPG
Run Code Online (Sandbox Code Playgroud)
验证它:
C:\> gpg --version
Run Code Online (Sandbox Code Playgroud)
C:\> gpg --full-generate-key
Run Code Online (Sandbox Code Playgroud)
添加您的真实姓名和电子邮件,与 GitHub 帐户中使用的相同。
密钥必须至少为 4096 位。
首先列出密钥:
C:\> gpg --list-secret-keys --keyid-format=long
Run Code Online (Sandbox Code Playgroud)
秒 rsa4096/ [快捷键] 2021-06-14 [SC]
然后导出:
C:\> gpg --armor --export [short-key]
Run Code Online (Sandbox Code Playgroud)
复制包含 BEGIN/END 文本的密钥。
-----BEGIN PGP PUBLIC KEY BLOCK-----
[huge-ascii-key]
-----END PGP PUBLIC KEY BLOCK-----
Run Code Online (Sandbox Code Playgroud)
前往Profile
> Settings
> SSH and GPG keys
>New GPG key
或者请按照这些视觉说明进行操作。
C:\> git config --global user.signingkey [short-key]
C:\> git config --global commit.gpgsign true
C:\> git config --global gpg.program "C:/Program Files (x86)/gnupg/bin/gpg"
Run Code Online (Sandbox Code Playgroud)
检查 GPG 代理:
gpg-agent --version
Run Code Online (Sandbox Code Playgroud)
设置环境变量:
GNUPGHOME=%USERPROFILE%\AppData\Roaming\gnupg
Run Code Online (Sandbox Code Playgroud)
结果.gitconfig
将有像这样的用户部分:
[user]
name = Your Name
email = your@email.com
signingkey = [short-key]
[commit]
gpgsign = true
[gpg]
program = C:/Program Files (x86)/gnupg/bin/gpg
Run Code Online (Sandbox Code Playgroud)
以下步骤帮助我解决了这个问题:
git config --global gpg.program "C:\Program Files (x86)\GnuPG\bin\gpg.exe"
git config --global --unset gpg.format
gpg --list-secret-keys --keyid-format=long
// this will list the keys and copy the Key-ID
Run Code Online (Sandbox Code Playgroud)
复制第一行中突出显示的键并在下一个查询中使用Key-ID
git config --global user.signingkey <Key-ID>
git config --global commit.gpgsign true
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
28967 次 |
最近记录: |