【问题标题】:Android Studio and Git - How do I GPG-sign my commits?Android Studio 和 Git - 如何对我的提交进行 GPG 签名?
【发布时间】:2016-10-12 04:10:42
【问题描述】:

根据this link,我只需要包含-S 开关即可使用我的GPG 密钥签署我的提交,但我不知道如何在Android Studio 中使用它。

如何在 Android Studio 中签署我的提交?

编辑:我很欣赏 OSX 解决方案的出现,但我真的很想看到一个适用于 Windows 的答案。 我的 Mac 只用于文档和其他东西。

【问题讨论】:

  • 希望有人提供 Windows 解决方案。
  • 我的回答同样适用于 Windows:测试第一个变通办法,如果还不够,我会将最后一个变通办法适应 Windows。
  • @VonC 我稍后会测试它们。 12 点到这里。

标签: windows git android-studio github gnupg


【解决方案1】:

正如我在“Sign git commits with GPG”中提到的,使用 Git 2.0:

如果您想对所有提交进行 GPG 签名,则必须始终添加 -S 选项。
commit.gpgsign 配置选项允许自动签署所有提交。

但这并不完全有效,它是followed by issue 127802,具有以下解决方法:

使用该内容创建了一个帮助脚本:

/usr/bin/gpg –batch –no-tty "$@"

并将gpg.program 设置为该脚本

或者:

将“no-tty”添加到“~/.gnupg/gpg.conf”为我解决了这个问题。

您可能仍会收到错误消息:

Commit failed with error:
gpg: problem with the agent - disabling agent use
gpg: Sorry, no terminal at all requested - can't get input
error: gpg failed to sign the data
fatal: failed to write commit object

再次:bug 进行中,后面还有issue 110261

除了以前的解决方案(OS X)之外,用这个解决它:

1) brew install gnupg gnupg2 pinentry-mac

2) nano ~/.gnupg/gpg-agent.conf -> pinentry-program /usr/local/bin/pinentry-mac

3) git config -–global gpg.program gpg2

【讨论】:

  • 谢谢!在 OS 10.14.3 上的 Mac 上,我所要做的就是提到的最后 3 个步骤。 Pinentry 在通过终端和 IntelliJ 进行提交时有效。
【解决方案2】:

进行一些测试后,我按照以下步骤操作,它可以工作 请记住按照以下步骤重新启动 Android Studio:

你是否厌倦了为每个提交写密码???

纳米~/.gnupg/gpg.conf

添加以下行

use-agent
no-tty
default-key <your key id>
  • 完成所有配置后,如果您使用 MacOS。你应该:

ln -s /usr/local/Cellar/libgcrypt/1.7.0_1 /usr/local/opt/libgcrypt

ln -s /usr/local/Cellar/libgpg-error/1.22 /usr/local/opt/libgpg-error

ln -s /usr/local/Cellar/libassuan/2.4.2 /usr/local/opt/libassuan

ln -s /usr/local/Cellar/pth/2.0.7 /usr/local/opt/pth

  • 执行

来源 ~/.profile

  • 使用选项 -S 进行一次提交

git commit -am "我的提交信息" -S

  • 你应该得到一个密码提示。 -- 输入你的密码

就是这样!!!

【讨论】:

    【解决方案3】:

    如果您安装了适用于 Windows 的 git,并在安装过程中选择了 MingGW 选项,这就是我用来让 Android Studio 处理签名提交的方法。

    提到/使用链接的程序供那些还没有它们的人使用。

    对于那些想要阅读我曾经在我的 Windows 环境中使用 gpg 签名的文章的人(以git config 行开头的页面下半部分是我们更关心的): https://jamesmckay.net/2016/02/signing-git-commits-with-gpg-on-windows/

    我将简要介绍通过命令行执行 gpg 部分的过程 - 假设所有三个程序都已从此处安装。

    检查 Android Studio 中的 Git 设置

    如果您尚未指定 git 在 Android Studio 中的位置,请在“设置”中执行以下操作:

    注意:这可以在 File &gt; Project Settings 中为一个项目完成,也可以在 File &gt; Other Settings &gt; Default Settings... 中完成

    版本控制 > Git > Git 可执行文件的路径

    由于我使用的是 MinGW 版本,因此设置为: C:\Program Files\Git\mingw64\bin\git.exe

    从 MinGW 版本 (git bash) 导出现有的公钥和密钥

    注意:使用 MinGW 提示程序执行

    1. gpg --export &gt; ~/gpg-public
    2. gpg --export-secret-keys &gt; ~/gpg-secret

    注意:对于那些不知道的人,~/ 默认设置为您用户的主目录。 (例如 Windows 10:C:/Users/%USERNAME%

    将导出的密钥导入 Gpg4win

    注意:使用 Windows 命令提示符执行。

    1. gpg --import &lt; "C:/Users/%USERNAME%/gpg-public"
    2. gpg --import &lt; "C:/Users/%USERNAME%/gpg-secret"

    将位置替换为您的 gpg-publicgpg-secret 文件所在的位置。

    让 git 使用来自 Gpg4win 的 gpg

    如文章中所述。没打开就在这里转贴了。

    注意:使用 MinGW 提示程序执行

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

    将上面的gpg.program 值(保留gpg2.exe)替换为您指定gpg4win 安装程序将其安装到的位置。

    (可选)当您使用它时,您可以将您的 git 配置为使用默认密钥自动签署您的提交(需要 git 版本 >= 2.0)

    • git config --global user.name &lt;name&gt;
    • git config --global user.email &lt;email&gt;
    • git config --global user.signingkey &lt;your-key-ID&gt;
    • git config --global commit.gpgsign true

    &lt; &gt; 中的值替换为您自己的值。您可以通过运行gpg --list-keys 并从以pub 开始并在/ 之后的行中获取密钥ID。

    现在您应该可以使用 Android Studio 提交并看到输入密码的提示。

    【讨论】:

      猜你喜欢
      • 2021-05-08
      • 2020-12-05
      • 1970-01-01
      • 1970-01-01
      • 2023-02-11
      • 1970-01-01
      • 1970-01-01
      • 2016-07-30
      • 1970-01-01
      相关资源
      最近更新 更多