AI can fly !!

AI がやりたい Web エンジニアのアウトプット (AI の知識は無い)

【GitHub】コミットメールアドレスをプライベート(非公開)にする【Git】

GitHub-logo

はじめに

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 を開きます。

GitHub-Settings-Emails

Keep my email addresses private を有効化

Keep my email addresses private にチェックを入れて有効化すると、 GitHub アカウントに登録されているメールアドレスが非公開になります。

Web ブラウザ上の GitHub でコミットを行った場合、コミット履歴には noreply メールアドレスが表示されます。

ただし、コマンドラインからのコミットでは、クライアント側の Git に設定されているメールアドレスが使用されるため、 Git の設定に noreply メールアドレスを登録します。(※後述)

help.github.com

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 を有効化しただけでは、誤って個人のメールアドレスが設定されたコマンドラインからのコミットを防ぐことができないため、こちらも合わせて有効化します。

help.github.com

Git の設定

user.email の設定

先述した通り、クライアント側の Git では GitHub から提供される noreply メールアドレスを設定します。

下記は、単一リポジトリ用の Git の設定例です。

git config --local user.email "[ID]+[GitHub アカウント名]@users.noreply.github.com"

おわりに

以上の設定を行うことで、コミット履歴には個人のメールアドレスを残さず、 GitHub アカウントに紐づくコミットを行うことができます。

GitHub のコミット履歴から個人のメールアドレスを収集し、スパムメールを送るといった事例もあるようなので、スパムメールが気になる方は個人のメールアドレスの設定は避けておいた方が無難かもしれません。

これで心おきなく GitHub でコミットできますね!(コミットするとは言ってない)