簡體   English   中英

使用 GPG 簽署 git 提交

[英]Sign git commits with GPG

有沒有辦法用 gpg 簽署 git 提交? 使用標簽(使用-s而不是-a )非常簡單,似乎會有類似的 function 用於提交。

注意:始終添加-S選項可能很麻煩。
在 git 2.0 及更高版本中,您可以添加一個配置來為您處理該選項。

請參閱Nicolas Vigier (boklm) 提交的 2af2ef3 :

添加commit.gpgsign選項以簽署所有提交

如果你想 GPG 簽署你所有的提交,你必須一直添加-S選項。
commit.gpgsign配置選項允許自動簽署所有提交。

commit.gpgsign

一個 boolean 指定是否所有提交都應該進行 GPG 簽名。
在執行諸如 rebase 之類的操作時使用此選項可能會導致簽署大量提交。 使用代理避免多次輸入 GPG 密碼可能很方便。

正如Apteryx在下面評論的那樣

要在命令行上全局設置它:

git config --global commit.gpgsign true

在 Git 2.27(2020 年第 2 季度)中,“ 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 合並gitster 提交 fc3f6fd ,2020 年 4 月 22 日)

cherry-pick/revert : honor --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 ( sammko )提交 43ad4f2提交 19dad04提交 ae03c97 (2020 年 10 月 18 日)。
(由Junio C Hamano 合並gitster 提交 73af6a4,2020年 11 月 2 日)

sequencer :修復傳遞給 merge 子命令的 gpg 選項

簽字人:Samuel Çavoj

當使用-s指定的自定義策略或章魚合並使用--rebase-merges執行變基時,同時啟用gpgsign (rebase -S或 config commit.gpgsign ),操作將失敗合並提交。

而不是替換了密鑰 ID 的“ -S%s ”,只有裸密鑰 ID 會傳遞給底層合並命令,該合並命令試圖將其解釋為引用。

按照 Johannes Schindelin 和 Junio C Hamano 的建議修復問題並添加測試用例。

和:

sequencer : 通過顯式--no-gpg-sign進行merge

簽字人:Samuel Çavoj

為與非默認策略合並而啟動的合並子命令將使用其自己的默認行為來決定如何簽署提交,而不管opts->gpg_sign設置為什么。
例如,如果commit.gpgsign被設置為true ,顯式給 rebase 的--no-gpg-sign標志將被忽略。

解決這個問題並添加一個測試這個行為的案例。

固定於:

git rebase --rebase-merges --gpg-sign git merge man )在使用非默認合並策略重放合並或重放章魚合並時(因為重放使用默認策略的雙頭合並是在單獨的代碼路徑中完成的,大多數用戶沒有觸發該問題),已通過 Git 2.30(2021 年第一季度)更正,.

請參閱Samuel Çavoj ( sammko )提交 43ad4f2提交 19dad04提交 ae03c97 (2020 年 10 月 18 日)。
(由Junio C Hamano 合並gitster 提交 73af6a4,2020年 11 月 2 日)

sequencer :修復傳遞給merge子命令的gpg選項

簽字人:Samuel Çavoj

當使用-s指定的自定義策略或章魚合並使用--rebase-merges執行rebase時,同時啟用gpgsignrebase -S或 config commit.gpgsign ),操作將失敗合並提交。
而不是替換了密鑰 ID 的“ -S%s ”,只有裸密鑰 ID 會傳遞給底層合並命令,該合並命令試圖將其解釋為引用。

按照 Johannes Schindelin 和 Junio C Hamano 的建議修復問題並添加測試用例。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM