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 署名するかどうかを指定するブール値。
リベースなどの操作を行うときにこのオプションを使用すると、多数のコミットが署名される可能性があります。GPG パスフレーズを何度も入力するのを避けるために、エージェントを使用すると便利な場合があります。

Apteryxが以下にコメントしたように

これをコマンドラインでグローバルに設定するには:

git config --global commit.gpgsign true

Git 2.27 (2020 年第 2 四半期) で、" " は、ユーザーが取り消す " " オプションをgit rebase学習しました。--no-gpg-signcommit.gpgSign

commit 5c5bac1、commit 4369d3acommit 9da37fecommit ae06ba6commit cf0ad4dcommit c241371 (03 Apr 2020) by Đoàn Trần Công Danh (``)を参照してください。
( 2020 年 4 月 22 日にコミット fc​​3f6fdJunio C Hamanoによってマージされました)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 )は、デフォルト以外のマージ戦略を使用してマージを再生するとき、または octopus マージを再生するときに、--gpg-sign基になる " " にコマンド ライン オプションを正しく渡さなかったことに注意してください(デフォルト戦略を使用した 2 ヘッド マージの再生は、 git mergeGit 2.30 (2021 年第 1 四半期) で修正されました。

commit 43ad4f2commit 19dad04commit ae03c97 (2020 年 10 月 18 日) by Samuel Čavoj ( sammko)を参照してください。
( 2020 年 11 月 2 日にコミット 73af6a4Junio C Hamanoによってマージされました)gitster

sequencer: merge サブコマンドに渡される gpg オプションを修正

署名者: Samuel Čavoj

--rebase-mergesまたは octopus マージで指定されたカスタム戦略のいずれかを使用してリベースを実行-sし、同時に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
たとえば、--no-gpg-signrebase に明示的に指定されたフラグは、commit.gpgsignに設定されている場合は無視されtrueます。

問題を修正し、この動作を実行するテスト ケースを追加します。

固定:

" git rebase --rebase-merges" ( man )--gpg-signは、デフォルト以外のマージ戦略を使用してマージを再生するとき、または octopus マージを再生するときに、基になる " " にコマンド ライン オプションを正しく渡しませんでした(git mergeデフォルト戦略を使用した 2 ヘッド マージの再生が別のコードパスで行われたため) 、ほとんどのユーザーでは問題は発生しませんでした)、これは Git 2.30 (Q1 2021) で修正されました。

commit 43ad4f2commit 19dad04commit ae03c97 (2020 年 10 月 18 日) by Samuel Čavoj ( sammko)を参照してください。
( 2020 年 11 月 2 日にコミット 73af6a4Junio C Hamanoによってマージされました)gitster

sequencer:サブコマンドgpgに渡されたオプションを修正merge

署名者: Samuel Čavoj

または octopus マージで指定されたカスタム戦略rebaseを使用して を実行し、同時に(または configのいずれかを)有効にした場合、操作はマージ コミットの作成に失敗していました。 キー ID が置換された" " の代わりに、裸のキー ID のみが基になるマージ コマンドに渡され、それを参照として解釈しようとします。--rebase-merges-sgpgsignrebase -Scommit.gpgsign
-S%s

Johannes Schindelin と Junio C Hamano の提案に従って、問題を修正し、テスト ケースを追加します。

于 2013-12-17T07:41:14.047 に答える