Windows環境でのGitコミット署名設定手順
この手順では、Windows環境でGPG (GNU Privacy Guard) を使用してGitコミットに署名を付ける方法を説明します。これにより、GitHubでコミットに”Verified”マークが表示されるようになります。
1. GPG for Windows (Gpg4win) のインストール
Section titled “1. GPG for Windows (Gpg4win) のインストール”choco install gpg4win -y --ignore-checksums2. GPG鍵の生成
Section titled “2. GPG鍵の生成”gpg --full-generate-keyコマンドを実行すると、以下の情報を入力するよう求められます:
- 鍵の種類: RSA and RSA (デフォルト)
- 鍵長: 4096ビット
- 有効期限: 0 (無期限) または適切な期間
- 名前: あなたの名前またはGitHubユーザー名
- メールアドレス: GitHubに登録しているメールアドレス
- パスフレーズ: 安全なパスフレーズ
注意: パスフレーズは必ず覚えておくか、安全な場所に保管してください。
gpg: C:\\Users\\n0166\\AppData\\Roaming\\gnupg\\trustdb.gpg: 信用データベースができましたgpg: ディレクトリ'C:\\Users\\n0166\\AppData\\Roaming\\gnupg\\openpgp-revocs.d'が作成されましたgpg: 失効証明書を 'C:\\Users\\n0166\\AppData\\Roaming\\gnupg\\openpgp-revocs.d\\571397233557986B568D5F009ABD5929EBDD32F7.rev' に保管しました。公開鍵と秘密鍵を作成し、署名しました。
pub rsa4096 2024-10-09 [SC] 571397233557986B568D5F009ABD5929EBDD32F7uid nichicom-sakurai <sakurai.yuki@nck.co.jp>sub rsa4096 2024-10-09 [E]3. 生成したGPG鍵の確認
Section titled “3. 生成したGPG鍵の確認”gpg --list-secret-keys --keyid-format LONGgpg: 信用データベースの検査gpg: marginals needed: 3 completes needed: 1 trust model: pgpgpg: 深さ: 0 有効性: 1 署名: 0 信用: 0-, 0q, 0n, 0m, 0f, 1u[keyboxd]---------sec rsa4096/9ABD5929EBDD32F7 2024-10-09 [SC] 571397233557986B568D5F009ABD5929EBDD32F7uid [ 究極 ] nichicom-sakurai <sakurai.yuki@nck.co.jp>ssb rsa4096/02B1C3AC0203DC74 2024-10-09 [E]上記の出力から、sec行の鍵ID(この例では9ABD5929EBDD32F7)をメモしておきます。
4. GPG公開鍵のエクスポート
Section titled “4. GPG公開鍵のエクスポート”先ほどメモした鍵IDを使用して、公開鍵をエクスポートします:
$ gpg --armor --export 9ABD5929EBDD32F7-----BEGIN PGP PUBLIC KEY BLOCK-----
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luqR-----END PGP PUBLIC KEY BLOCK-----出力された-----BEGIN PGP PUBLIC KEY BLOCK-----から-----END PGP PUBLIC KEY BLOCK-----までの全てをコピーします。
5. GitHubにGPG鍵を登録
Section titled “5. GitHubにGPG鍵を登録”- GitHubのGPG鍵設定ページにアクセス
- 先ほどコピーした公開鍵をテキストエリアに貼り付け
- “Add GPG key”をクリック
6. Gitの設定
Section titled “6. Gitの設定”署名鍵の設定
Section titled “署名鍵の設定”# グローバル設定(あなたの鍵IDに置き換えてください)git config --global user.signingkey 9ABD5929EBDD32F7
# 設定確認git config --global -e自動署名の設定
Section titled “自動署名の設定”毎回-Sオプションを付ける代わりに、全てのコミットで自動的に署名するよう設定できます:
# グローバル設定(推奨)git config --global commit.gpgsign true
# 特定のリポジトリのみで設定する場合git config commit.gpgsign trueGPGプログラムのパス設定(Windows特有)
Section titled “GPGプログラムのパス設定(Windows特有)”git config --global gpg.program "C:\Program Files (x86)\GnuPG\bin\gpg.exe"注意: Gpg4winのインストール先によってパスが異なる場合があります。以下のコマンドで確認できます:
Terminal window where gpg
7. 署名付きコミットの実行
Section titled “7. 署名付きコミットの実行”手動で署名する場合
Section titled “手動で署名する場合”# -Sオプションを付けてコミット$ git commit -S -m 'コミットメッセージ'自動署名が設定されている場合
Section titled “自動署名が設定されている場合”# 通常通りコミットするだけで署名される$ git commit -m 'コミットメッセージ'8. トラブルシューティング
Section titled “8. トラブルシューティング”「 No secret key」エラーが出る場合
Section titled “「 No secret key」エラーが出る場合”gpg: skipped "XXXXXX": No secret keyこのエラーは以下の原因が考えられます:
-
GPGプログラムのパスが正しく設定されていない
Terminal window git config --global gpg.program "C:\Program Files (x86)\GnuPG\bin\gpg.exe" -
鍵IDが正しく設定されていない
Terminal window # 鍵の再確認gpg --list-secret-keys --keyid-format LONG# 正しい鍵IDで再設定git config --global user.signingkey YOUR_KEY_ID -
Gitのユーザー情報とGPG鍵のメールアドレスが一致していない
Terminal window # Gitのユーザー情報確認git config --global user.email
パスフレーズ入力が求められない場合
Section titled “パスフレーズ入力が求められない場合”Windows環境では、GPGエージェントが動作していない可能性があります。Gpg4winに含まれるKleopatraを起動しておくと解決することがあります。
コミットが正しく署名されているか確認するには:
# 最新のコミットの署名を確認git log --show-signature -1
# 署名の検証git verify-commit HEAD9. 署名の確認
Section titled “9. 署名の確認”GitHubでの確認
Section titled “GitHubでの確認”署名付きコミットをプッシュした後、GitHub上でコミットの横に”Verified”バッジが表示されれば成功です。
ローカルでの確認
Section titled “ローカルでの確認”# 署名付きコミットの一覧表示git log --show-signature
# 特定のコミットの署名検証git verify-commit <commit-hash>