Git подписанные коммиты - Как подавить "Вам нужна кодовая фраза, чтобы разблокировать секретный ключ..."

Я изменил мою глобальную конфигурацию Git, чтобы подписать все коммиты. Я также использую gpg-agent, так что мне не нужно каждый раз вводить пароль.

Теперь каждый раз, когда я делаю новый коммит, я вижу следующие пять строк, напечатанных на моей консоли:

[blank line]
You need a passphrase to unlock the secret key for
user: "John Doe <[email protected]>"
2048-bit RSA key, ID ABCDEF12, created 2016-01-01
[blank line]

Хуже того, когда я делаю простой тайник, это сообщение печатается дважды, без необходимости заполняя мою консоль (я предполагаю, что для каждого из двух создаваемых объектов фиксации).

Есть ли способ подавить этот вывод?

Ответы

Ответ 1

Это больше проблема с настройкой gpg, чем git.

Поскольку вы используете агент, вы можете в качестве временного решения добавить no-tty в свой gpg.conf.

echo 'no-tty' >> ~/.gnupg/gpg.conf

(кажется, работает даже лучше, чем опция --batch)

Ответ 2

Принятый ответ не работает для меня для Git version 1.8.3.1 на Fedora 25.

Что сработало?

  • Проверьте, работает ли gpg-agent с помощью $ gpg-agent

  • Убедитесь, что gpg-agent имеет вашу кодовую фразу в кеше. Чтобы убедиться, что он есть, подпишите любой файл в текущем каталоге. Если кодовая фраза не была в кеше, она будет задана сейчас.
    $ gpg -s any-file.txt

  • Не забудьте удалить вновь созданный подписанный any-file.txt.gpg
    $ rm any-file.txt.gpg

  • Теперь подписывание с помощью Git будет работать теперь, взяв требуемую кодовую фразу из gpg-agent.
    $ git commit -S -m 'my commit message'