10

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

这个问题(自 2013 年起)提交签名在 Windows 版本中仍然不可用。

那么是否可以在 Windows 版本的 sourcetree 中签署提交?

4

3 回答 3

19

我遇到了类似的问题,我按照@theminer3746 的回答进行了设置。

我能够修复 no tty 错误并使用以下步骤有一个对话框输入密码

  • 安装:https ://www.gpg4win.org
  • 将密钥加载到 Kleopatra 程序中([Your homedir]/.gnupg/secring.gpg)
  • 在终端中运行此命令:git config --global gpg.program "c:\Program Files (x86)\GnuPG\bin\gpg.exe"
于 2017-09-28T15:24:09.417 回答
18

嗯,答案是肯定的和否定的。

我想出的解决方法如下(我假设你已经设置了 GPG 密钥,如果没有遵循github 的关于如何设置它的教程

步骤 1 为 Windows 安装 git shell

(如果你还没有)

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

ctrl+,转到 git 选项卡并单击Use System Git在此处输入图像描述

步骤 3 配置 git 以签署每个提交(可选)

terminal从 powershell (或者您可以使用源树中图标的内置终端)。

输入git config commit.gpgsign true- 这将配置 git 以自动签署CURRENT 存储库中的所有提交。

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


注意如果您选择跳过第 3 步,请确保-S每次提交时都添加 ( git 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 的所有其他功能(推送、拉取、获取、合并等)。

编辑:这个缺点已经被艾哈迈德的回答解决了。

于 2017-03-08T15:55:10.127 回答
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

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

于 2018-12-18T20:50:04.873 回答