title | emoji | type | topics | published | publication_name | ||
---|---|---|---|---|---|---|---|
コミットに署名する |
🪪 |
tech |
|
true |
yumemi_inc |
「私はこれを記述した、そしてこの仕事の後ろには私が付いている」と。品質の証明として、あなたの署名が入っているべきなのです。1
コミットに署名しましょう
GitHub 上でコミットに Verified のバッジがついた状態を目指します。Verified をクリックすると、次のようにポップアップで署名の状態について確認できます。
Git の初期設定ではコミットに署名はされません。それでもコミットは可能ですが、匿名のコミットになります。また署名には次のように段階があります。
- 名前とメールアドレスが設定されている
- コミットに署名されている
- ホスト上で有効な署名として認識されている
ローカルで署名できるようにする作業と、ホスト側で署名を有効化する作業がそれぞれ必要になります。ローカルは macOS を、ホスト側は GitHub を例に説明します。GitHub はドキュメントが充実しているのでリファレンスを示します。
:::message もし手元の環境で部分的にすでに対応済みの項目は読み飛ばして進めてください。例えば、すでに SSH キーを生成済みであれば、新しく生成し直す必要はありません。 :::
記事執筆時のバージョンです。
:::message alert xz 問題があったので Homebrew 4.2.15 以上の利用を強く推奨します :::
:::details xz 問題 xz v5.6.0/5.6.1 にバックドアが仕込まれてしまい、 Homebrew 4.2.14 以前では該当バージョンがインストールされる可能性があります。いつからか調べていないですが、この記事執筆時点では 4.2.14 と記載しており、筆者の環境にも xz 5.6.1 がインストールされてしまっていました。 Homebrew 4.2.15 では xz をダウングレードして 5.4.6 がインストールされるようになっているため、安全です。詳しくは下記で議論されています。
https://github.com/orgs/Homebrew/discussions/5243 :::
Name | Version | Releases |
---|---|---|
Git | 2.44.0 | https://github.com/git/git/tags |
Homebrew | 4.2.15 | https://github.com/Homebrew/brew/releases |
Gnu Privacy Guard | 2.4.5 | https://github.com/gpg/gnupg/tags |
PINEntry | 1.3.0 | https://github.com/gpg/pinentry/tags |
macOS では最初から Git がインストール済みです。
次のコマンドでインストールできます。
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
Homebrew をインストールすると brew
コマンドが使えるようになるので、次のコマンドでインストールできます。
brew install gpg pinentry
GitHub との認証に利用する SSH キーを生成します。
ssh-keygen -t ed25519 -C "your_email@example.com"
コミットに記録する名前を設定します。
git config --global user.name "Mona Lisa"
https://docs.github.com/ja/get-started/getting-started-with-git/setting-your-username-in-git
コミットに記録するメールアドレスを設定します。
git config --global user.email "YOUR_EMAIL"
gpg --full-gen-key
key_id
は生成結果の sec
の暗号方式の /
以下の文字列です。
git config --global user.signingkey {key_id}
git config --global commit.gpgsign true
実際のコミットが GPG 署名されているか確認する
git log --show-signature -1
gpg: Good signature from ...
と表示されていればOK(... の部分には、鍵作成時に入力した名前とメールアドレスが表示されます)
未署名だと、 gpg:
の部分が表示されません。
ローカルで生成した SSH キーを GitHub に追加します。
1つの GitHub アカウントに対して複数のメールアドレスを設定可能です。 参加している Organization からメールアドレスを発行されたら設定してリポジトリごとにメールアドレスを設定しましょう。
次のコマンドを実行し、ペーストボードにコピーされた内容を GitHub に GPG キーとして追加します。
gpg --armor --export {key_id} | pbcopy
管理者であれば Rulesets でこの署名を強制することができます。あなたが管理者であれば、ルールの適用を検討してみてください。管理者でない場合は、管理者とルールの適用を相談してみてください。
冒頭で引用した「達人プログラマー」からの言葉の続きを引用して終わります。当時この言葉にとても勇気づけられました。
あなたの名前をコード中に見い出すことによって、みんな、それがきっちりと記述、テスト、ドキュメント化されたものであることを確認できるのです。それが本当のプロの仕事です。それが本当のプロによって記述されたものなのです。1
https://zenn.dev/riscait/scraps/a41a82e7100360 https://qiita.com/s6n/items/bb869f740a53a3bf169e https://qiita.com/ymatzki/items/814bd455a34609ef63df