【问题标题】:Configure GPG for Git on Windows在 Windows 上为 Git 配置 GPG
【发布时间】:2017-10-28 17:38:10
【问题描述】:

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

我尝试关注 this tutorial,但 gpg2 在 Git Bash 中执行时不使用正确的字符集,因此它无法识别包含非 ASCII 字符的键。

有什么办法可以解决这个问题吗?在 Windows 上通过 Git 使用 PGP 签名的最佳方式是什么?

【问题讨论】:

    标签: git bash character-encoding gnupg pgp


    【解决方案1】:

    2018 年 10 月更新,commented belowPHPirate

    λ 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.
    

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


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

    vonc@bvonc MINGW64 ~/.ssh
    $ gpg --version
    gpg (GnuPG) 1.4.21
    

    确实建议使用不同的 gpg:

    git config --global gpg.program "c:/Program Files (x86)/GnuPG/bin/gpg.exe"
    

    使用latest Git for WindowsUTF-8 set in locale 重试。
    尝试Git simplified path 以排除来自其他程序的任何干扰。

    【讨论】:

    • 在最新版本的 Gpg4Win 中,他们更改了路径/文件名。 gpg.exe 现在是 v2,他们从安装路径中删除了 GNUc:/Program Files (x86)/GnuPG/gpg.exe
    • 它实际上将gpg.exe 放在bin 文件夹中GnuPG 下。所以应该更新路径以反映这种变化,即:.../GnuPG/bin/gpg.exe
    • @RafaelCamposNunes 好的,我已经相应地编辑了答案。
    • @VonC 仅供参考,我偶然发现 git 2.19.1 包含 gpg2,他们默默地更新了它,似乎......让事情变得更容易了。
    • @PHPirate 谢谢。我已将您的评论包含在答案中以提高知名度。
    【解决方案2】:

    从(至少)git 2.19.1 开始,git 包括 gpg2!

    这意味着您不再需要安装 gpg4win 来进行 git 签名。 你问如何设置提交签名,这样你只需要在某个超时后输入你的密码:gpg-agent 可以处理这个问题,我测试了它是否适用于 git 的 gpg(但不适用于 gnupg 的 gpg)。虽然它并不总是对我有用,但它应该可以正常工作。

    下面是我写下的完整说明的简短摘要here,假设您已设置签名:

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

    【讨论】:

    • 您能否详细说明“确保您使用的是 git 的 gpg”并可能暗示如何导入 ket?
    • @TafT 你看过我链接的完整说明吗?
    • 我没有!谢谢你的提示。