在Windows上为Git配置GPG

jus*_*.me 17 git bash gnupg pgp character-encoding

我安装了Git for Windows,包括Windows 10和Gpg4win上的Git Bash.默认情况下,我必须将我通过Kleopatra创建的所有密钥重新导入到Git Bash中内置的GPG版本中,并且它不允许我设置代理.我需要做的是自动唱歌,这样我不需要每次都输入密码,而只是在给定的时间段内第一次输入密码.怎么可能?

我尝试按照本教程,但gpg2在Git Bash中执行时不使用正确的字符集,因此它无法识别包含非ASCII字符的键.

有什么方法可以解决这个问题吗?在Windows上使用GGP与Git签名的最佳方法是什么?

Von*_*onC 19

更新于2018年10月,由PHPirate 评论如下:

? git --version
git version 2.19.1.windows.1

? gpg --version
gpg (GnuPG) 2.2.9-unknown
libgcrypt 1.8.3
Copyright (C) 2018 Free Software Foundation, Inc.
Run Code Online (Sandbox Code Playgroud)

没有该更新的痕迹 git-for-windows/git/releases


原始答案(2017):默认情况下,Git for Windows包含gpg1,而不是gpg2

vonc@bvonc MINGW64 ~/.ssh
$ gpg --version
gpg (GnuPG) 1.4.21
Run Code Online (Sandbox Code Playgroud)

确实建议使用不同的gpg:

git config --global gpg.program "c:/Program Files (x86)/GnuPG/bin/gpg.exe"
Run Code Online (Sandbox Code Playgroud)

再次使用最新的Git for Windows,在区域设置中设置UTF-8.
尝试使用Git简化路径来排除来自其他程序的任何干扰.

  • 它实际上将 `gpg.exe` 放在 `GnuPG` 下的 `bin` 文件夹中。因此应该更新路径以反映此更改,即:`.../GnuPG/bin/gpg.exe`。 (3认同)
  • @PHPirate 谢谢。我已将您的评论包含在答案中以提高知名度。 (2认同)

PHP*_*ate 8

由于(至少)git 2.19.1,git包括gpg2!

这意味着您不再需要仅为git签名安装gpg4win。您问如何设置提交签名,以便您只需要在特定的超时时间后输入密码gpg-agent即可:可以处理该问题,并且我测试了它是否适用于git的gpg(但不适用于gnupg的gpg)。尽管它并不总是对我有用,但应该可以正常使用。

以下是我在此处写下的完整说明的简短摘要,假设您已进行签名设置:

  1. 确保您正在使用git的gpg
  2. 更新缓存时间,在C:\Users\username\.gnupg\gpg-agent.conf(如果不存在则创建文件)中,添加default-cache-ttl 34560000max-cache-ttl 34560000。这些时间以秒为单位,选择任何您想要的。
  3. 使用重新启动gpg-agent gpgconf --kill gpg-agent