Git Ошибка фиксации фиксации: секретный ключ недоступен
Я получаю эту ошибку при попытке совершить использование с помощью Git.
gpg: skipped "name <[email protected]>": secret key not available
gpg: signing failed: secret key not available
error: gpg failed to sign the data
fatal: failed to write commit object
Я создал новый ключ, как показано ниже, но он по-прежнему дает ту же ошибку
gpg --list-keys
~/.gnupg/pubring.gpg
--------------------------------
pub 2048R/35F5FFB2 2016-04-23
uid name (New key) <[email protected]>
sub 2048R/112A8C2D 2016-04-23
Секретный ключ такой же, как и выше
Я нашел это
Генерирование ключа GPG для тегов git и последовало за шагами, но оно все еще не работает, любая идея?
Ответы
Ответ 1
Вам необходимо настроить секретный ключ перед его использованием.
git config user.signingkey 35F5FFB2
Или объявите это глобально, если вы хотите использовать один и тот же ключ для каждого хранилища.
git config --global user.signingkey 35F5FFB2
Источник: https://git-scm.com/book/en/v2/Git-Tools-Signing-Your-Work
Ответ 2
Что сработало для меня, было добавление
git config --global gpg.program "C:/Program Files (x86)/GNU/GnuPG/gpg2.exe"
Если вы хотите найти полный путь к gpg2.exe:
where gpg2.exe
Ответ 3
Это работало для меня на Windows 10
git config --global gpg.program "C:\Program Files (x86)\GnuPG\bin\gpg.exe"
Это была ошибка, которую я получил до исправления
gpg: skipped "3E81C*******": secret key not available gpg: signing failed: secret key not available error: gpg failed to sign the data fatal: failed to write commit object
Ответ 4
Мне нравится заполнять все эти ответы, потому что у меня есть много проблем с этим.
В этих примерах используется флаг --global
, но вы можете удалить его, если хотите, чтобы эти вещи были локально.
Настроить секретный ключ в git
git config --global user.signingkey 35F5FFB2
Настроить программу witch gpg tu для использования в git (необязательно)
Некоторые системы (например, Ubuntu) могут иметь gpg
и gpg2
одновременно. Вам нужно указать, что вы будете использовать gpg2
git config --global gpg.program gpg2
Экспорт GPG_TTY (необязательно)
Возможно, если вы используете эту команду в среде ssh, у вас есть следующая ошибка: Inappropriate ioctl for device
или gpg: échec de la signature : Ioctl() inapproprié pour un périphérique
. Это можно исправить с помощью:
export GPG_TTY=$(tty)
Автоматическое включение пения GPG (необязательно)
git config --global commit.gpgsign true
Ответ 5
Вы должны установить переменную GNUPGHOME
.
Без него GnuPG не сможет найти ваши ключи.
# On unix add it to your path
# On windows it will usually be under:
<drive>:\Users\<username>\AppData\Roaming\gnupg
В Unix он просто добавляет его в путь.
В Windows вы должны открыть панель управления и установить ее как
System Variable
Name: GNUPGHOME
Path: <drive>:\Users\<username>\AppData\Roaming\gnupg
Ответ 6
Возможно, вам нужно клонировать ваш собственный репозиторий, где у вас есть права. У меня была эта проблема, когда я клонировал репозиторий другого человека.