【GitHub】コミットメールアドレスをプライベート(非公開)にする【Git】
はじめに
Git では git log
コマンドでコミット履歴を表示することができます。
それはつまり、 GitHub 上の公開リポジトリを clone すれば、誰でもコミットした人のメールアドレスを見ることができるということなので、セキュリティ的に良くありません。
ダミーのメールアドレスを Git に設定してコミットをするという方法もありますが、GitHub ではコミットの Author をメールアドレスで判断しているため、GitHub アカウントと紐づかないコミットになってしまいます。
ということで、コミットを GitHub アカウントと紐づけつつ、個人のメールアドレスを非公開にするための設定手順をまとめました。
TL;DR
- GitHub の Settings - Emails にある
Keep my email addresses private
を有効化 - GitHub の Settings - Emails にある
Block command line pushes that expose my email
を有効化 - Git の設定の
user.email
を[ID]+[GitHub アカウント名]@users.noreply.github.com
に設定する
GitHub の設定
GitHub にサインインし、 Settings の Emails を開きます。
Keep my email addresses private を有効化
Keep my email addresses private
にチェックを入れて有効化すると、 GitHub アカウントに登録されているメールアドレスが非公開になります。
Web ブラウザ上の GitHub でコミットを行った場合、コミット履歴には noreply
メールアドレスが表示されます。
ただし、コマンドラインからのコミットでは、クライアント側の Git に設定されているメールアドレスが使用されるため、 Git の設定に noreply
メールアドレスを登録します。(※後述)
noreply メールアドレスとは
noreply
メールアドレスは、個人のメールアドレスを非公開にするために GitHub によって提供されるコミットメールアドレスです。
GitHub ではコミットメールアドレスによって、そのコミットを GitHub アカウントに関連付けますが、 GitHub アカウントに登録されているメールアドレス以外に noreply
メールアドレスによってコミットを関連付けることができます。
noreply
メールアドレスは一つの GitHub アカウントに対して [ID]+[GitHub アカウント名]@users.noreply.github.com
の形式で一つだけ提供されます。
Block command line pushes that expose my email を有効化
Keep my email addresses private
を有効化すると、 Block command line pushes that expose my email
が活性化されます。
ここにチェックを入れて有効化すると、個人のメールアドレスが設定されたコミットをブロックすることができます。
Keep my email addresses private
を有効化しただけでは、誤って個人のメールアドレスが設定されたコマンドラインからのコミットを防ぐことができないため、こちらも合わせて有効化します。
Git の設定
user.email の設定
先述した通り、クライアント側の Git では GitHub から提供される noreply
メールアドレスを設定します。
下記は、単一リポジトリ用の Git の設定例です。
git config --local user.email "[ID]+[GitHub アカウント名]@users.noreply.github.com"
おわりに
以上の設定を行うことで、コミット履歴には個人のメールアドレスを残さず、 GitHub アカウントに紐づくコミットを行うことができます。
GitHub のコミット履歴から個人のメールアドレスを収集し、スパムメールを送るといった事例もあるようなので、スパムメールが気になる方は個人のメールアドレスの設定は避けておいた方が無難かもしれません。
これで心おきなく GitHub でコミットできますね!(コミットするとは言ってない)