在Windows上使用sourcetree提交签名

时间:2017-03-08 15:55:10

标签: git atlassian-sourcetree git-sign

目前(2018年2月13日)Sourcetree仅支持commit signing in Mac version

来自this question(自2013年起)提交签名仍然无法在Windows版本中使用。

那么可以在Windows版的sourcetree中签名提交吗?

3 个答案:

答案 0 :(得分:15)

我有类似的问题&我按照@theiner3746的答案来设置它。

我能够解决没有tty错误&有一个对话框,可以使用以下步骤输入密码

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

答案 1 :(得分:13)

嗯,答案是肯定的,不是。

我已经想到的工作如下(我假设您已经设置了GPG密钥,如果不遵循github's tutorial on how to set it up

步骤1安装Windows的git shell

(如果你还没有)

步骤2确保sourcetree使用system' s git

ctrl+,转到git标签,然后点击Use System Git enter image description here

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

来自powershell(或者您可以使用sourcetree中terminal图标中的内置终端)。

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

如果您想在每个存储库中对每个提交进行签名,请改为使用git config --global commit.gpgsign true

注意如果您选择跳过第3步,请确保每次提交时都添加-Sgit commit -S),否则您的提交将无法签名。< / p>

<击>

<击>

缺点

当然这种方式有一个缺点。

每次你提交。你必须在终端做。如果您尝试使用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解决。

答案 2 :(得分:0)

如果您尚未创建GPG密钥,请转到github上有关GPG密钥here的教程

打开Sourcetree,然后单击右上角的“终端”按钮。 Click on terminal icon (我没有足够的声誉点来发布图像。当我获得足够的声誉点时,我将更新图像:))。

输入以下命令

$ 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

无需下载任何其他软件即可对您的提交进行签名。

方法2

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

[commit]
    gpgsign = true
    signingkey = YOUR_KEY_HERE

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