macOS や Windows の Git でタグやコミットに署名できるように GnuPG (The GNU Privacy Guard) をインストールする手順や注意事項です。
実際に署名を付ける手順は以下などを参照ください。
macOS
前提
- Homebrew が使えること
- Git が使えること
インストール
GnpPG のインストール
brew install gnupg
pinentry-mac のインストール
GnuPG をインストールしただけでは、Git の CLI を直接使わずにコミットするときなど、秘密鍵を使うときのパスフレーズの入力に難があるので 1、 pinentry-mac を使うように構成します。
brew install pinentry-mac
インストール後に表示される以下のメッセージの通りに ~/.gnupg/gpg-agent.conf
を作成します。
==> Caveats
You can now set this as your pinentry program like
~/.gnupg/gpg-agent.conf
pinentry-program /usr/local/bin/pinentry-mac
以下のコマンドをそのまま実行すれば良いでしょう。
echo "pinentry-program /usr/local/bin/pinentry-mac" >> ~/.gnupg/gpg-agent.conf
これで、秘密鍵を使うときにパスフレーズの入力でウィンドウが表示されるようになります。
期待したとおりに動かないとき
gpg-agent
を停止してから試してみると良いかも。
gpgconf --kill gpg-agent
Windows
前提
- Git for Windows が使えること
GnuPG のインストールについて
Git for Windows に GnuPG が付いているため、改めてインストールする必要はありません。 2 3
gpg
コマンドの実行について
GPG キーペアの作成など、gpg
コマンドは Git Bash 上で使います。
通常の状態では gpg
コマンドは PowerShell やコマンドプロンプトから使えないので、普段これらのシェルから git
コマンドを使っている場合は注意が必要です。 4
-
MacVim by macvim-dev で tpope/vim-fugitive: fugitive.vim: A Git wrapper so awesome, it should be illegal の
:Gcommit
を使うときにパスフレーズを入力出来ないなど。 ↩ -
choco install gnupg
などとして GnuPG をインストールし、Git がこれを使うようにgit config
で設定することもできるとは思いますが、.gitconfig
のポータビリティがなくなるので私は諦めました。 ↩ -
Git for Windows 同梱版や Windows 以外の GnuPG で使用される
~/.gnupg
ディレクトリが、Windows 用の GnuPG では%APPDATA%\gnupg
になるなどの違いがあります。コマンドオプションや環境変数を設定して同じディレクトリを参照するようにもできますが、同じディレクトリを共用するとファイルのロック操作に不具合を生じるようです。 ↩ -
環境変数
PATH
を適切に設定すれば使えるようですが。 ↩