38

有没有办法用 gpg 签署 git 提交?使用标签(使用-s而不是-a)非常容易,似乎提交会有类似的功能。

4

2 回答 2

62

注意:-S一直添加选项可能很麻烦。
在 git 2.0 及更高版本中,您可以添加一个配置来为您处理该选项。

请参阅Nicolas Vigier (boklm)提交 2af2ef3

添加对commit.gpgsign所有提交进行签名的选项

如果您想对所有提交进行 GPG 签名,则必须-S始终添加该选项。config 选项允许自动签署所有提交
commit.gpgsign

commit.gpgsign

一个布尔值,用于指定是否所有提交都应该是 GPG 签名的。
在执行 rebase 等操作时使用此选项可能会导致大量提交被签名。使用代理来避免多次输入您的 GPG 密码可能会很方便。

正如Apteryx评论如下

要在命令行上全局设置:

git config --global commit.gpgsign true

在 Git 2.27(2020 年第二季度)中,“ git rebase”学习了“ --no-gpg-sign”选项来反commit.gpgSign制用户可能拥有的选项。

请参阅Đoàn Trần Công Danh (``)的提交 5c5bac1提交 4369d3a提交 9da37fe提交 ae06ba6提交 cf0ad4d提交 c241371(2020 年 4 月 3 日) 。(由Junio C Hamano 合并 -- --提交 fc3f6fd中,2020 年 4 月 22 日)
gitster

cherry-pick/revert--no-gpg-sign:在任何情况下都是荣誉

签字人:Đoàn Trần Công Danh

{cherry-pick,revert} --edit 尚未兑现 --no-gpg-sign。

将此选项传递给以git commit兑现它。


请注意,“ git rebase --rebase-mergesman在使用非默认合并策略重放合并或重放--gpg-sign章鱼git merge合并时(因为使用默认策略重放双头合并是在一个单独的代码路径,大多数用户没有触发该问题),已在 Git 2.30(2021 年第一季度)中更正

请参阅Samuel Čavoj ( ) 的提交 43ad4f2提交 19dad04提交 ae03c97(2020 年 10 月 18 日(由Junio C Hamano 合并 -- --提交 73af6a4中,2020 年 11 月 2 日)sammko
gitster

sequencer: 修复传递给合并子命令的 gpg 选项

签字人:Samuel Čavoj

--rebase-merges使用指定的自定义策略-s或章鱼合并执行变基时,同时gpgsign启用(变基-S或配置commit.gpgsign),操作将在合并提交时失败。

而不是用“ -S%s”替换键 id,只有裸键 id 会被传递给底层合并命令,该命令试图将其解释为 ref。

按照 Johannes Schindelin 和 Junio C Hamano 的建议修复问题并添加测试用例。

和:

sequencer: 显式传递--no-gpg-signmerge

签字人:Samuel Čavoj

为具有非默认策略的合并启动的合并子命令将使用其自己的默认行为来决定如何签署提交,无论opts->gpg_sign设置为什么。
例如,如果设置为--no-gpg-sign,则显式指定给 rebase 的标志将被忽略。commit.gpgsigntrue

修复问题并添加一个测试用例来执行此行为。

固定在:

" git rebase --rebase-merges" ( man )在使用非默认合并策略重放合并或重放章鱼合并时(因为使用默认策略重放双头合并是在单独的代码路径中完成的)未正确将--gpg-sign命令行选项传递给底层git merge,大多数用户没有触发该问题),已在 Git 2.30(2021 年第一季度)中更正,.

请参阅Samuel Čavoj ( ) 的提交 43ad4f2提交 19dad04提交 ae03c97(2020 年 10 月 18 日(由Junio C Hamano 合并 -- --提交 73af6a4中,2020 年 11 月 2 日)sammko
gitster

sequencer: 修复gpg传递给merge子命令的选项

签字人:Samuel Čavoj

当使用 with 或章鱼合并指定的自定义策略执行rebasewith并同时启用(或 config )时,操作将在合并提交时失败。 而不是用“ ”替换键 id,只有裸键 id 会被传递给底层合并命令,该命令试图将其解释为 ref。--rebase-merges-sgpgsignrebase -Scommit.gpgsign
-S%s

按照 Johannes Schindelin 和 Junio C Hamano 的建议修复问题并添加测试用例。

于 2013-12-17T07:41:14.047 回答
36

git commit -S(需要 git >= 1.7.9)。

于 2012-04-09T18:46:12.880 回答