コミットオブジェクトのPGP署名の検証を行い、マージを行う
「コミットオブジェクト」のPGP署名の検証を行ってから、マージを行います。PGP署名の検証に失敗した場合
「コミットオブジェクト」にPGP署名がない場合や、「コミットオブジェクト」のPGP署名が信用されていない、もしくは、署名が検証できなかった場合は、マージを行いません。例えば署名が信用できない署名だった場合、以下のようにエラーになります。
コミットオブジェクトのPGP署名を検証する
コマンドのオプションの「マージするコミットオブジェクト」に、署名されている「注釈付きのタグ」を指定しても、タグのPGP署名は検証対象になりません。PGP署名の検証は、「コミットオブジェクト」に署名されたPGP署名が検証対象になるためです。
従って、署名されている「注釈付きのタグ」を指定した場合、そのタグが指す「コミットオブジェクト」の署名が検証の対象になります。
これは、タグ以外の場合も同様です。
署名の確認
ここでは例として、すでに署名済みの「コミットオブジェクト」をマージします。署名の状況は、以下のようになっています。
1.署名者の公開鍵
署名者の公開鍵を自分の環境にインポートしています。署名者は、「kledgeb」です。
署名者の公開鍵は信用済みになっています。
2.署名者の公開鍵のプロパティー
署名者の公開鍵のプロパティは、以下のようになっています。3.コミットオブジェクトの署名
「マージするコミットオブジェクト」に指定する「コミットオブジェクト」の署名は、以下のようになっています。正しい署名として認識されています。
コマンドの実行例
コマンドの実行例です。ここでは例として、「master」ブランチに「fix」ブランチをマージします。
「fix」ブランチのブランチヘッドが指す「コミットオブジェクト」は、上記の通り正しい署名がなされています。
1.ブランチの確認
現在のブランチ構成を確認すると、以下のようになっています。現在のブランチは、「master」ブランチであることが分かります。
同様に、「HEAD」は「master」ブランチを指していることが分かります。
2.ブランチの状態
ブランチの状態を図にすると、以下のようになります。見ての通り、この状態で「master」ブランチに「fix」ブランチをマージすると、「3ウェイマージ」によるマージになることが分かります。
3.コマンドの実行
コマンドのオプションは、以下のオプションを指定します。オプション |
---|
--verify-signatures |
「端末」から、以下のコマンドを実行します。
コマンドの詳細は、「ファイルのマージを行うコマンドの説明」を参考にしてください。
ポイントは、赤字の箇所です。
git merge --verify-signatures --verbose fix
4.コミットメッセージの入力
「3ウェイマージ」によるマージが行われ、かつ、「マージコンフリクト」が発生しなかったため、「マージコミット」が行われます。通常のコミットと同様に「コミットメッセージ」を入力します。
「コミットメッセージ」を入力したら、ファイルを上書き保存してテキストエディターを終了します。
5.コマンドの実行結果
「3ウェイマージ」によるマージの結果が表示されます。また、PGP署名の検証結果が表示されます。
6.マージ後のブランチの確認
マージ後のブランチを確認すると、以下のようになっています。「master」ブランチの「ブランチヘッド」が指す「コミットオブジェクト」の識別子は、「マージコミット」で生成した「コミットオブジェクト」を指しています。