IT

GitHubのコミットをダミーのメールアドレスで行う方法

こんにちは。だいらです。
さて、この記事を読まれている方は、GitHubを使用している方だと思います。
私も、個人開発で作ったソースコードはGitHubで管理しています。
便利なGitHubですが、実はプライベート用のメールアドレスを他人に公開しているかもしれません。
え、、メールアドレスを他人に見られたくない!」って方は以下でその方法を記載していますので、是非行なってみてください

どこでメールアドレスを公開しているのか

ではまず、ローカルGitですでにコミットを行なっているソースコードのディレクトリに移動して、以下のコマンドを実行してみてください。

$ git log --pretty=fuller

このコマンドは、コミット履歴をみるためのコマンドです。

$ git log --pretty=fuller
commit aa11bb22cc33dd44ee55 (HEAD -> master, origin/master, origin/HEAD)
Author:     userName <abcdefg@xxxx.com>
AuthorDate: Tue Jun 4 17:41:54 2019 +0900
Commit:     userName <abcdefg@xxxx.com>
CommitDate: Tue Jun 4 17:41:54 2019 +0900
first commit

表示されたコミットログを確認してみると、AuthorとCommitterに、自分のメールアドレスが表示されてしまってますよね。
これは、誰でも確認でき、「誰がどう変更したのか」ということが確認できるため、とても便利ですが、メールアドレスも公開してしまっているということにもなります。

GitHubのアカウントとCommitter

GitHubでは、Committerを判断するために、ユーザー名と、メールアドレスを使用しています。
GitHubにはさきほど確認した変更履歴も記録されているため、cloneを行い、変更履歴を確認すればそのコミットのユーザー名とメールアドレスが分かります。
では、適当なメールアドレスにしてしまえば良いと思うと思いますが、GitHubで設定しているメールアドレスと、Committerが違うと、
そのコミットが自分と認識してもらえないため、適当なメールアドレスを設定するのはお勧めしません。
では、他人にも見られず、かつ自身のコミットとして認識させるための方法を実行していきましょう。

方法解説

方法の結論としては、
ダミーのメールアドレスを取得し、そのメールドレスをコミットする際に使用する」となります。

ダミーのメールアドレスを取得する

まず、Emails設定画面 に移動します。

少し下にスクロールすると、
Keep my email addresses private という項目がありますので、チェックボックスをオンにしましょう。
これは、メールアドレスを非公開にする設定で、編集やマージを行うと、自動的にメールを送信してくれるのですが、その際にGitHubで提供している noreply のメールアドレスで送信してくれる設定です。
説明欄にnoreply のメールアドレスが書かれており、これが、ダミーのメールアドレスとなりますので、コピーして保存しておきましょう。

git configのユーザー情報のメールアドレスを変更する

では、ダミーのメールアドレスが取得できたので、それを設定していきましょう。

Gitを使用しているソースコードのディレクトリに移動してください。
Gitを使用する際の、ユーザーの名前とメールアドレスを指定します。
メールアドレスは、ダミーのメールアドレスを指定してください。

$ git config --global user.name <ユーザー名前>
$ git config --global user.email <ダミーアドレス>

gitの設定を確認してみましょう。

$ git config --list
 user.name=<ユーザー名前>
 user.email=<ダミーアドレス>

あとは、いつも通りコミットして、GitHubにpushするだけです。
これからのコミットには、ダミーアドレスが使用されます!

さて、ここで問題がありますね。
いままでのコミットにはメールアドレスがしっかりと残っちゃってるので、これからのコミットがダミーアドレスでもいままでのコミットから、メールアドレスが知られてしまいますね。
嫌ですよね。なら、過去のコミットのアドレスも変えちゃいましょう!

すでにコミットしている場合

最初に確認した通り、コミットのAUTHORと、COMMITTERにメールアドレスが記録されてます。
今までのコミットをすべてに対して、AUTHORと、COMMITTERのメールアドレスを変更する操作を行います。

以下のコマンドを実行してください。

$ git filter-branch -f --env-filter "GIT_AUTHOR_NAME='<ユーザー名前>'; GIT_AUTHOR_EMAIL='<ダミーメールアドレス>'; GIT_COMMITTER_NAME='<ユーザー名前>'; GIT_COMMITTER_EMAIL='<ダミーメールアドレス>' HEAD;" 

変更されてることを確認します。

$ git log --pretty=fuller
commit aa11bb22cc33dd44ee55 (HEAD -> master, origin/master, origin/HEAD)
Author:     userName <xxxxx@@users.noreply.github.com>
AuthorDate: Tue Jun 4 17:41:54 2019 +0900
Commit:     userName <xxxxx@@users.noreply.github.com>
CommitDate: Tue Jun 4 17:41:54 2019 +0900
first commit

今までのコミットのAUTHORと、COMMITTERがダミーアドレスになりましたね。

すでにGitHubにpushしている場合

GitHubにすでにpushしちゃってる人は、GitHubにあがっているコミットの履歴も変えなくてはいけません。
さきほど、ダミーアドレスに変えたコミット履歴をGitHubにpushする操作を行うのですが、いつも通りのpushでは、競合していると判断されpushできません。
さすがに、これは止むを得ませんので、禁じ手のforce pushを行います。

$ git push -f origin master

これで、GitHubのコミット履歴もダミーアドレスに変更されました。

まとめ

今回は、コミット履歴のメールアドレスをダミーのメールアドレスに設定する方法をご紹介しました。
GitHubは、個人の開発なら無料でもとても素晴らしいサービスだと思います。
しっかりと活用して、良い開発ライフにしましょう。

-IT