在 windows 上使用 sourcetree 提交签名

Commit signing using sourcetree on windows

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

this question 开始(自 2013 年起)提交签名在 Windows 版本中仍然不可用。

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

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

我想出的解决方法如下(我假设您已经设置了 GPG 密钥,如果没有,请遵循 github's tutorial on how to set it up

第 1 步为 Windows

安装 git shell

(如果你还没有)

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

ctrl+, 转到 git 选项卡并单击 Use System Git

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

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

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

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


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

编辑:此缺点已由 解决。

我遇到了类似的问题,我按照@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"

如果您还没有创建 GPG 密钥,请前往 github 的 GPG 密钥教程 here

打开Sourcetree,点击右上角的终端按钮。 Click on terminal icon (我没有足够的声誉点数 post 图片。当我获得足够的声誉点数时,我会更新图像 :))。

输入以下命令

$ 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 文件夹中的配置文件。以及 add/update 以下选项。

[commit]
    gpgsign = true
    signingkey = YOUR_KEY_HERE

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