Windows で git commit に署名する
普段 Mac を使っているが久々に Windows で開発することになり、コミットに署名をしたいので調べた。 GPGキーを作成するのに必要なアプリケーションもそれをインストール方法も色々あるようだが、 winget でパッケージ管理できるらしいので homebrew を使うような感覚でこれを使ってみる。
winget とは
winget コマンド ライン ツールを使用すると、Windows 10 および Windows 11 コンピューター上でアプリケーションを検出、インストール、アップグレード、削除、および構成することができます。 このツールは、Windows パッケージ マネージャー サービスに対するクライアント インターフェイスです。
https://learn.microsoft.com/ja-jp/windows/package-manager/winget/
winget と Gpg4win をインストールする
winget search でまずは検索してみる
winget search gnupg
名前 ID バージョン ソース ----------------------------------------------------------------------------------------------- GpgFrontend - OpenPGP/GnuPG crypto, sign and key management … 9NH716MQK2B5 Unknown msstore GNU Privacy Guard GnuPG.GnuPG 2.4.5 winget Gpg4win GnuPG.Gpg4win 4.3.1 winget
複数あるようだが、GitHub Docsで Gpg4win について言及されていたのでそれをインストールする。
winget install Gpg4win gpg -h
ヘルプが表示されない場合は shell を開きなおして再度 gpg -h を実行してヘルプが表示されることを確認する。
キーの作成
GitHub Docsの通りに進めていく
gpg --full-generate-key
目的のキー、目的のキーサイズ、キーの有効期限を聞かれるが Enter を押してすべて規定値にする。 ユーザーIDとメールアドレスの入力を求められるので、GitHubアカウントに登録した検証済みメールアドレスを入力する。最後に、パスフレーズを聞かれるので入力して、完了。
GPGキーのリストを表示する。
gpg --list-secret-keys --keyid-format=long
使用したキーによって表示は変わるが、この場合は ed25519/ の後ろをコピーしてGPGキーを表示する。
[keyboxd]
---------
sec ed25519/XXXXXXXXXXXXXXXX 2024-03-25 [SC]
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
uid [ 究極 ] Your Name <your@email.address>
ssb cv25519/XXXXXXXXXXXXXXXX 2024-03-25 [E]
gpg --armor --export XXXXXXXXXXXXXXXX
-----BEGIN PGP PUBLIC KEY BLOCK----- で始まり、-----END PGP PUBLIC KEY BLOCK----- で終わる GPG キーをコピーします。
GitHubアカウントにGPGキーを追加する。
git に署名設定を追加する
すべてのコミットに署名するように設定を追加する
git config --global commit.gpgsign true
git config --global user.signingkey <your key> git config --global commit.gpgsign true Get-Command gpg | fl git config --global gpg.program " C:\Users\your name\AppData\Local\Programs\GnuPG\bin\gpg.exe" git commit
最後に
困った時に参考にさせてもらいました。