git commit подписание не удалось: секретный ключ недоступен

28

Я получаю эту ошибку при попытке совершить использование 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 и выполните шаги, но он все еще не работает, любая идея?

    
задан Emilio Menéndez 23.04.2016 в 13:54
источник
  • AFAIK, имена должны быть одинаковыми –  Alexey Ten 23.04.2016 в 14:28

5 ответов

41

Перед использованием необходимо настроить секретный ключ.

git config user.signingkey 35F5FFB2

Или глобально, если вы собираетесь использовать один и тот же ключ для каждого репозитория.

git config --global user.signingkey 35F5FFB2

Источник: Ссылка

    
ответ дан Leonardo Emanuel Alifraco 23.04.2016 в 15:49
  • Спасибо, много Леонардо! Оно работает!! Извините, если вопрос был глупым, я понятия не имел, как его решить. –  Emilio Menéndez 23.04.2016 в 16:22
  • Отлично! Указание ключа подписи пользователя также будет иметь несколько адресов электронной почты на одном ключе и иметь несоответствие между электронной почтой git и первым адресом на ключе. –  user2943160 08.06.2016 в 16:14
  • Безопасно ли хранить .gitconfig с секретным ключом в публичном репо? –  melihovv 02.02.2017 в 01:59
  • для записи, как @melihovv спросил о: - секретный ключ должен быть на вашем GPG keyring. Только хэш-идентификатор этого ключа сохраняется в конфиге. –  BRFennPocock 16.05.2017 в 16:21
  • Мне пришлось сделать это вместе с git config --global gpg.program gpg2. –  Splaktar 27.09.2017 в 08:06
19

Что сработало для меня, было добавление

git config --global gpg.program "C:/Program Files (x86)/GNU/GnuPG/gpg2.exe"

Если вы хотите найти полный путь к gpg2.exe:

where gpg2.exe
    
ответ дан paul van bladel 13.04.2017 в 15:29
5

Мне нравится заполнять все эти ответы, потому что у меня есть много проблем с этим.

В этих примерах используется флаг --global , но вы можете удалить его, если хотите, чтобы эти вещи были локально.

Настроить секретный ключ в git

git config --global user.signingkey 35F5FFB2

Настроить программу gitch witch 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
    
ответ дан alphayax 28.11.2017 в 14:42
  • Как отключить его, если вы больше не хотите его использовать? –  Madonah Syombua 08.03.2018 в 19:53
  • Вы можете добавить флаг -unset в эти команды git config, чтобы отключить его –  alphayax 09.03.2018 в 17:35
  • Я фактически использовал этот git config --global commit.gpgsign true, но сказал false. –  Madonah Syombua 09.03.2018 в 21:16
4

Вы должны установить переменную 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
    
ответ дан CodeWizard 23.04.2016 в 15:39
  • Для меня это не был GNUPGHOME. С GPGHOME он работает для меня –  Sysix 15.05.2018 в 16:31
-3

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

    
ответ дан user6671429 09.03.2017 в 10:45