在Windows上使用Sourcetree进行提交签名

12

目前(2018年2月13日),Sourcetree仅支持Mac版本中的提交签名

而根据此问题(自2013年以来),在Windows版本中仍不支持提交签名。

那么,在Sourcetree的Windows版本中是否可能签署提交呢?

3个回答

20

我遇到了类似的问题,我按照 @theminer3746 的答案解决了它。

我能够通过以下步骤修复没有tty错误并有一个对话框来输入密码

  • 安装:https://www.gpg4win.org
  • 将密钥加载到Kleopatra程序中 ([您的主目录]/.gnupg/secring.gpg)
  • 在终端中运行此命令:git config --global gpg.program "c:\Program Files (x86)\GnuPG\bin\gpg.exe"

1
在使用 Kleopatra 导入 GPG 密钥时,遇到了一个问题,就是按照 ahmad 描述的方式来导入,在我的 gnupg 文件夹中找不到 secring.gpg 文件。这似乎是随着 GnuPG 2.1 版本更改而来的。解决方法是在 Git Bash 中使用以下命令自己创建此文件:gpg --export-secret-keys >~/.gnupg/secring.gpg(感谢 rtyley)。之后,Kleopatra 中的导入应该可以正常工作。 - daimpi

20

好的,答案既是肯定的也是否定的。

我想出的解决方法如下(假设您已经设置了GPG密钥,如果没有,请参考GitHub的设置教程

步骤1 在Windows上安装git shell

(如果您还没有安装)

步骤2 确保sourcetree使用系统的git

ctrl+,,转到git选项卡,然后单击使用系统Gitenter image description here

步骤3 配置git对每个提交进行签名(可选)

从PowerShell中(或者您可以使用Sourcetree中的内置终端),输入git config commit.gpgsign true - 这将配置git自动签署当前存储库中的所有提交

如果您想在所有存储库中签署每个提交,请使用git config --global commit.gpgsign true

注意:如果您选择跳过第3步,请确保每次提交时都添加-Sgit commit -S),否则您的提交将不会被签署。


缺点

当然,这种方法有一个缺点。

每次提交都必须在终端中执行。如果尝试使用sourcetree的提交按钮进行提交,将会出现错误。

gpg: cannot open tty `no tty': No such file or directory
error: gpg failed to sign the data
fatal: failed to write commit object

除此之外,您可以像往常一样使用Sourcetree的其他功能(推送、拉取、获取、合并等)。
编辑:这个缺点已经被 Ahmad's answer解决了。

1
您还需要配置签名密钥ID:git config --global user.signingkey ABBBBBBBAAAAAA。 - Muhammad Shahab

4
如果您还没有创建GPG密钥,请前往github的GPG密钥教程这里
打开Sourcetree,点击右上角的终端按钮。 点击终端图标 (我没有足够的声望在此处发布图片,当我获得足够的声望时,我将更新图片)。
输入以下命令。
$ git config commit.gpgsign true

为了签署提交,您需要拥有GPG签名密钥。使用以下命令检查现有密钥:

$ gpg --list-secret-keys --keyid-format LONG

例如,如果您的输出为:
/Users/hubot/.gnupg/secring.gpg
------------------------------------
sec   4096R/3AA5C34371567BD2 2016-03-10 [expires: 2017-03-10]
uid                          Hubot 
ssb   4096R/42B317FD4BA89E7A 2016-03-10

3AA5C34371567BD2 是您的签名密钥。

接下来,请执行以下命令:

$ git config commit.signingkey YOUR_KEY_HERE

如果您想为每个存储库签名,则在上述命令中添加--global标志。例如,

$ git config --global commit.gpgsign true
$ git config --global commit.signingkey YOUR_KEY_HERE

无需下载其他软件即可签署您的提交。

方法二

打开存储库中 .git 文件夹中的配置文件,并添加/更新以下选项。

[commit]
    gpgsign = true
    signingkey = YOUR_KEY_HERE

尝试在更新上述选项后提交。

应该是"user.signingkey"而不是"commit.gpgsign",对吗? - Waqar UlHaq

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