Android Studio和Git - 我如何对我的提交进行GPG签名?

25
根据这个链接,我只需要在提交时使用-S开关即可使用我的GPG密钥签名,但我不知道如何在Android Studio中使用。
如何在Android Studio中签署我的提交? 编辑:感谢提供适用于MacOS的解决方案,但我真的希望看到一个适用于Windows的答案。我只在Mac上用于文档等。

希望有人能提供一个Windows的解决方案。 - Aloha
我的答案也适用于Windows:先尝试第一种解决方法,如果不够用,我会将最后一种方法改编成适用于Windows的版本。 - VonC
@VonC 我晚点会测试它们。这里是凌晨12点。 - Aloha
3个回答

8
如我在“使用GPG签名git提交”中提到的那样,使用Git 2.0时:

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

但这并不完全有效,并且存在问题127802,以下是解决方法:

创建一个带有该内容的助手脚本:

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

gpg.program设置为该脚本

或者:

在"~/.gnupg/gpg.conf"中添加"no-tty"解决了我的问题。

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

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

再次提醒: 正在进行的错误,也跟随着问题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


谢谢!在我的Mac上,OS 10.14.3版本,我只需要执行最后三个步骤。当通过终端和IntelliJ提交时,Pinentry可以正常工作。 - Just The Highlights

5

在进行了一些测试后,我按照以下步骤操作成功了。请记得在执行以下步骤后重新启动Android Studio:

每次提交都需要输入密码很烦人吗?

nano ~/.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

  • 执行以下命令:

source ~/.profile

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

git commit -am "my commit message" -S

  • 您将会得到一个密码提示。 -- 输入您的密码

就是这样!!!


2
如果您已经安装了Windows版的Git,并在安装过程中选择了MingGW选项,那么这就是我用来使Android Studio能够签署提交的方法。
下面是所需程序及其链接(供那些还没有它们的人使用):
- Android Studio 2.2.2 - Gpg4win 2.3.3 (https://www.gpg4win.org/download.html) - 使用变体“仅带GnuPG组件的Gpg4win” - Git for Windows 2.10.1
对于那些想要阅读我在Windows环境下实现gpg签名的文章的人,请参考以下链接:(从git config行开始的页面底部是我们更关心的部分) https://jamesmckay.net/2016/02/signing-git-commits-with-gpg-on-windows/ 我将简要介绍通过命令行执行gpg部分的过程,假设所有三个程序都已经安装好了。
检查Android Studio中的Git设置。如果您还没有在Android Studio中指定git的位置,请在“设置”中执行以下操作:
注意:这可以在一个项目的“文件>项目设置”或“文件>其他设置>默认设置...”中完成。
版本控制 > Git > Git可执行文件路径
由于我使用的是MinGW版本,它被设置为: C:\Program Files\Git\mingw64\bin\git.exe
从MinGW版本(git bash)导出现有的公钥和私钥
注意:请使用MinGW提示程序执行
gpg --export > ~/gpg-public
gpg --export-secret-keys > ~/gpg-secret

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

将导出的密钥导入到Gpg4win中

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

  1. gpg --import < "C:/Users/%USERNAME%/gpg-public"
  2. gpg --import < "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 <name>
  • git config --global user.email <email>
  • git config --global user.signingkey <your-key-ID>
  • git config --global commit.gpgsign true
<>中的值替换为您自己的值。您可以通过运行gpg --list-keys并从以pub开头且在/之后的行中获取密钥ID。
现在,您应该能够使用Android Studio提交并看到提示输入密码。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接