在Git中,是否有可能签署合并提交?

7

我必须在每次提交到远程仓库前签名。然而,合并提交不需要签名。我使用Sourcetree和Git控制台,无法对合并提交进行签名。是否有方法可以实现签名合并提交?


3
git merge --signoff 将在 Git 2.14.x/2.15 (Q3 2017) 中推出。请参见下面的答案 - VonC
5个回答

13

在合并完成后,您可以运行git commit --amend --no-edit -s


对于 Git > 2.15,您可以使用以下命令: git merge --signoff参考文献:
  • https://git-scm.com/docs/git-merge#Documentation/git-merge.txt---signoff
  • https://github.com/git/git/blob/master/Documentation/RelNotes/2.15.0.txt
- Lucas Saldanha
1
如果您需要验证签名(即使用GPG),请使用“-S”而不是“-s”。 - bibzzzz

6

您可以在不提交的情况下进行合并:

git merge --no-commit

Git准备好一切以便提交。之后你可以用以下命令完成合并:

git commit -s

3
如果你幸运的话,--signoff 参数会被添加到git合并中。看起来有些工作正在进行,可以参考本月早些时候的这个补丁
在此之前,其他答案也可以。但是,我建议添加一个别名以方便使用。例如,将以下内容添加到你的.git/config文件中。
[alias]
    merge-signed = !git merge --no-commit $1 && git commit -is

然后:

git merge-signed feature

2
是的,在 Git 2.14.x/2.15 (2017年第三季度) 将会有可能。
请参见 提交记录 14d01b4(由 Łukasz Gryglicki (lukaszgryglicki) 在 2017年7月4日提交)。 (由 Junio C Hamano -- gitster -- 合并于 提交记录 bdfc15f, 2017年8月24日) 翻译如下:

merge: 添加 --signoff 标志

一些项目要求每个提交,包括合并提交,都必须签名确认。

由于 "git merge" 没有像 "git commit" 那样的 "--signoff" 选项,用户需要在命令显示编辑器以描述合并时手动添加一个,或稍后使用 "git commit --amend --signoff"。

通过向 "git merge" 教授 "--signoff" 选项,帮助这些项目的开发人员。


1
一种方法是合并后使用“git commit --amend”命令更改提交信息,或者使用“--no-commit”合并,然后手动提交带有signed-off-by行的变更。
合并通常不引入新的更改,因此不总是需要签名。

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