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

Возможно, вам нужно клонировать ваш собственный репозиторий, где у вас есть права. У меня была эта проблема, когда я клонировал репозиторий другого человека.