Теперь протестируйте в Git Bash и IntelliJ то, что вы можете зафиксировать, и убедитесь, что это работает, выполнив

с Как мне подписать git коммиты, используя IDE, например IntelliJ в Windows?

Если вам интересно, прочитайте то, что я пробовал здесь:

Я следовал в основномРуководство Github, Я позаботился о том, чтобы не забыть перезапустить bash / IntelliJ после того, как вы изменили конфигурационные файлы.

Создать новую пару ключей GPGДобавьте ключ GPG в мою учетную запись GitHubСвяжите подтвержденное (от GitHub) письмо с моим ключом GPG где я убедился, что электронная почта в моем.gitconfig та же.Расскажите Git о моем ключе GPGПодписать коммит с GPG и подтвердил, что это было Verfied на Github.На этой же странице я установил коммиты для подписи по умолчаниюgit config --global commit.gpgsign true (Я использую git 2.12). Я сделал новый коммит и подтвердил, что он подписанgit verify-commit HEAD

Когда я пытаюсь зафиксировать в IntelliJ, я получаюgpg: cannot open tty 'no tty' так что я нашелIntelliJ не может зафиксировать изменения при попытке подписать коммит (GPG) и добавилno-tty к моемуC:\Users\username\.gnupg\gpg.conf файл и перезапустил.

Тогда я получаю ошибкуgpg: Sorry, no terminal at all requested - can't get input что кажется разумным, потому что я только что добавил опцию, которая имеет отношение к терминалу. подобноgpg: извините, терминал вообще не запрашивается - не могу получить ввод говорит, что решение состоит в том, чтобы удалитьno-tty что я надеюсь, не относится к моему делу.

Другие ответы на первый вопрос предложили добавитьuse-agent а также вgpg.conf файл, который приводит к дополнительной ошибкеgpg: gpg-agent is not available in this session, Ах, подождите, может быть, мне нужно настроить gpg-agent.

Лучшее руководство по Windows, которое я смог найти, былоArchlinux вики (да правильно). Указывает добавить вC:/Users/username/.gnupg/gpg-agent.conf время жить, поэтому я создаю этот файл и добавляюdefault-cache-ttl 34560000 а такжеmax-cache-ttl 34560000 согласноhttps://superuser.com/questions/624343/keep-gnupg-credentials-cached-for-entire-user-session

Теперь давайте запустим этот gpg-агент,https://superuser.com/questions/1153101/why-does-git-complain-that-no-gpg-agent-is-running заставил меня проверить, что на самом делеgpg-agent --version был намного новее, чемgpg --version, поэтому я хотел бы иметь gpg2, чтобы я мог бежатьgit config --global gpg.program gpg2.

Но у меня нет gpg2 в командной строке. Я установилGpg4win (бинарные выпуски, внизу) и даже Gnupg 2 отдельно, но это не дало мне gpg2 в командной строке, я заметил, что мне пришлось поместить папку GNU в мои Program Files (x86), что, я думаю, мне следовало бы иметь. С участиемwhere gpg Я обнаружил, что это, по крайней мере, не указывает на только что скачанный gpg, потому что тот показал второе. Так что я указал на мерзавца сgit config --global gpg.program 'C:\Program Files (x86)\GnuPG\bin\gpg.exe'

Теперь у меня ошибкаgpg: skipped "keyid": secret key not available, Решение вgpg: пропущено "N": секретный ключ недоступен это то, что я только что сделал, так что это не поможет. Тогда я понял, что все настроил с другим gpg, а не с этим. я сделалalias gpg="'C:\Program Files (x86)\GnuPG\bin\gpg.exe'"проверилgpg --version и сделал все это снова. На самом деле я положил строку псевдонима в моем.bash_profile поэтому мне не нужно запускать его каждый раз.

Когда я пытаюсьgpg --gen-key он зависает сразу. Понятия не имею, почему, я не думаю, что проблема заключается в недостаточной энтропии, потому что старый gpg работал нормально, но возможно, что более новая версия требует большей энтропии. В любом случае я не смог найти ни одного пользователя Windows с такой же проблемой в Интернете.

Оно работает! Когда я фиксирую в IntelliJ, он запрашивает мою парольную фразу с пинентри только один раз. Но теперь я не могу сделать коммит из Git Bash, сno secret key ошибка, которая имеет смысл, потому что, как я уже сказалgpg --list-keys пуст: ключ не связан с этим gpg.

Intellij IDEA подписывает GIT совершает с GPG имеет отношение, но единственный ответ для MAC и, кажется, не относится к Windows. Это привело меня к:

me.m01.eu намеки на добавление новой переменной среды с именемGNUPGHOME что указывает наC:\Users\username\.gnupg, Этот каталог существует, но, как указано в ответе отСбой подписания git commit: секретный ключ недоступен Я думаю, что мой новый GPG используетC:\Users\username\AppData\Roaming\gnupg поэтому я добавил это вместо. Я проверил сprintenv GNUPGHOME что я его правильно добавил (пришлось перезагрузить). Ничего не изменилось, хотя.

Так как мои ключи, я думаю, вC:\Users\username\.gnupg Я попытался указать переменную окружения, но это не помогло,gpg --list-keys был все еще пуст. Поэтому мне пришлось искать другой способ указать gpg, где находятся мои ключи.

gpg --list-keys --homedir='C:/Users/s156757/.gnupg' дал правильные ключи, поэтому я решил добавитьhomedir C:\Users\s156757\.gnupg к моемуC:\Users\username\AppData\Roaming\gnupg\gpg.conf файл, который мне пришлось создать. Потому чтоэта ошибка, Я подтвердилgpg --list-keys вернул мои ключи. Все та же ошибка, добавляяno-ttyа такжеuse-agent чтобы этот файл не помог.

Теперь я могу делать коммиты из IntelliJ, но не с помощью Git Bash, что приводит кskipped "keyid": No secret key.

Больше мыслей

Мне не удалось экспортировать ключи из gpg в gpg2 сgpg --export [ID] | gpg2 --import && gpg --export-secret-keys [ID] | gpg2 --importЯ думал, что только Gpg4win можно настроить, поэтому мне не нужно каждый раз вводить пароль. К сожалению, я нигде не смог найти способ заставить Gpg4win запомнить мою фразу-пароль.Я потом подумал, если я правильно помнюgpg --list-secret-keys никогда не возвращал ничего для gpg 2. Я только позже узнал, что эта команда отличается отgpg --list-keys.

Короче говоря, это главная проблема: gpg-agent разрешает кэширование парольной фразы, но gpg-версия git не соответствует версии gpg-agent, поэтому сначала вам нужно установить правильный gpg 2. Но мне не удалось выполнить эту установку таким образом, чтобы я мог выполнять коммиты как из Git Bash, так и из IntelliJ.

Ответы на вопрос(2)

Ваш ответ на вопрос