有没有办法用 gpg 签署 git 提交?使用标签(使用-s
而不是-a
)非常容易,似乎提交会有类似的功能。
2 回答
注意:-S
一直添加选项可能很麻烦。
在 git 2.0 及更高版本中,您可以添加一个配置来为您处理该选项。
请参阅Nicolas Vigier (boklm)的提交 2af2ef3:
添加对commit.gpgsign
所有提交进行签名的选项
如果您想对所有提交进行 GPG 签名,则必须
-S
始终添加该选项。config 选项允许自动签署所有提交
。commit.gpgsign
commit.gpgsign
一个布尔值,用于指定是否所有提交都应该是 GPG 签名的。
在执行 rebase 等操作时使用此选项可能会导致大量提交被签名。使用代理来避免多次输入您的 GPG 密码可能会很方便。
要在命令行上全局设置:
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-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 选项签字人:Samuel Čavoj
当
--rebase-merges
使用指定的自定义策略-s
或章鱼合并执行变基时,同时gpgsign
启用(变基-S
或配置commit.gpgsign
),操作将在合并提交时失败。而不是用“
-S%s
”替换键 id,只有裸键 id 会被传递给底层合并命令,该命令试图将其解释为 ref。按照 Johannes Schindelin 和 Junio C Hamano 的建议修复问题并添加测试用例。
和:
sequencer
: 显式传递--no-gpg-sign
给merge
签字人:Samuel Čavoj
为具有非默认策略的合并启动的合并子命令将使用其自己的默认行为来决定如何签署提交,无论
opts->gpg_sign
设置为什么。
例如,如果设置为--no-gpg-sign
,则显式指定给 rebase 的标志将被忽略。commit.gpgsign
true
修复问题并添加一个测试用例来执行此行为。
固定在:
" 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 或章鱼合并指定的自定义策略执行
rebase
with并同时启用(或 config )时,操作将在合并提交时失败。 而不是用“ ”替换键 id,只有裸键 id 会被传递给底层合并命令,该命令试图将其解释为 ref。--rebase-merges
-s
gpgsign
rebase -S
commit.gpgsign
-S%s
按照 Johannes Schindelin 和 Junio C Hamano 的建议修复问题并添加测试用例。
git commit -S
(需要 git >= 1.7.9)。