编辑:作为Git版本1.7.9,它是可能签署的Git提交(git commit -S
)。稍微更新答案以反映这一点。
问题标题为:
有没有一种方法可以使用GPG密钥在Git中“自动签名”提交?
简短的回答:是的,但是不要这样做。
解决输入中的错字:git commit -s
不签署提交。而是从man git-commit
页面:
-s,--signoff
在提交日志消息的末尾,由提交者添加“按签署者退出”行。
这将提供类似于以下内容的日志输出:
± $ git log [0:43:31]
commit 155deeaef1896c63519320c7cbaf4691355143f5
Author: User Name
Date: Mon Apr 16 00:43:27 2012 +0200
Added .gitignore
Signed-off-by: User Name
注意“ Sign-off-by:...”位;是由上的-s
标志生成的git-commit
。
引用发布公告电子邮件:
- “ git commit”获悉“ -S”以进行GPG签名;这可以通过“ git log”的“ --show-signature”选项显示。
因此,可以签署提交。但是,我个人强烈建议您谨慎使用此选项;自动签署提交几乎没有意义,请参见下文:
只是一个附带的问题,也许不应该对提交进行签名,而应该只标记我从未创建的标签,因为我提交单个提交。
没错 提交未签名;标签是。原因可以在Linus Torvalds的此消息中找到,该消息的最后一段说:
签署每个提交完全是愚蠢的。这仅意味着您将其自动化,并使签名价值降低。它也没有增加任何实际价值,因为SHA1的git DAG链的工作方式,您只需要一个
签名就可以使该提交有效地覆盖所有提交。因此,对每个提交进行签名只是遗漏了要点。
我鼓励浏览链接的消息,这阐明了为什么自动签名提交不是一个比我可以做的更好的好主意。
但是,如果您想自动对标签进行签名,则可以通过将其包装git-tag -[s|u]
在别名中来实现;如果要执行此操作,则可能要在其中设置密钥ID ~/.gitconfig
或特定于项目的.git/config
文件。有关该过程的更多信息,请参见git社区书。签署标签比签署您的每次提交都更加有用。