GitHubでは、個人用と仕事用とで同じGitHubアカウントを使うことが推奨されています。たとえば、「複数の個人アカウントのマージ - GitHub Docs」にヒントとして書かれています。
一方、Gitのコミットにはメールアドレスが記録されます。そのため、個人用のコミットには個人用のメールアドレスを使い、仕事用のコミットには仕事用のメールアドレスを使いたくなります。そこで、GitHubで複数のメールアドレスを使い分ける方法を紹介します。
なお、これらの内容はGitHubのドキュメントに書いてあります。この記事内からもリンクを張っています。
GitHubへのメールアドレスの追加
GitHubアカウントには、複数のメールアドレスを登録できます。
アカウントの「Settings」→「Emails」にある「Add email address」から、メールアドレスを追加できます。これは「GitHub アカウントへのメールアドレスの追加 - GitHub Docs」に書いてあります。
こうしてメールアドレスを登録しておけば、そのメールアドレスを使ったコミットがGitHubのWeb上でアカウントと関連付けられます。
<余談>
なお、ひとつのメールアドレスはひとつのGitHubアカウントにのみ登録できます。メールアドレスを別のGitHubアカウントと関連付けたい場合は、そのメールアドレスをいったんGitHubアカウントから登録解除する必要があります。
Web操作時のコミットメールアドレスの設定
複数のメールアドレスを登録しておくと、GitHubのWebベースでのGitコミットの際に、どのメールアドレスを使って操作するかを選択できます。
ただしこのためには、「Settings」→「Emails」にある「Keep my email address private」をオフに設定しておく必要があります。
<余談>
なお、「Keep my email address private」は、登録したメールアドレスを直接使わないようにする設定です。これをオンにした場合、WebベースでのGit操作に対して「ID+USERNAME@users.noreply.github.com
」という形式のメールアドレスが使われます。
Gitクライアントのコミットメールアドレスの設定
WebでなくローカルのGitクライアントからコミットする場合に、どのメールアドレスを使うかを設定できます。
そのパソコンでのGitコミットに使うデフォルトのメールアドレスを設定するには、次のようにします。この設定は、~/.gitconfig
に保存されます。
git config --global user.email "YOUR_EMAIL"
また、特定のリポジトリでのGitコミットに使うメールアドレスを設定するには、次のようにします。この設定は、そのリポジトリの .git/config
に保存されます。
git config user.email "YOUR_EMAIL"
これは「コミットメールアドレスを設定する - GitHub Docs」に書いてあります。
リポジトリごとに設定を切り替える方法として、git configの includeIf
を使う方法もあります。この機能はgit configのドキュメントの「Conditional includes」に記載されています。たとえば、特定のリモートリポジトリのURLにマッチしたら別の設定ファイルを読み込むように設定できます。
[includeIf "hasconfig:remote.*.url:git@github.com:mycompany/**"]
path = ~/.gitconfig_mycompany
GnuPG署名の設定
GitコミットにはGnuPGによるデジタル署名ができます。これは「GitのコミットにGnuPGで署名する - Qiita」という記事で紹介しています。このGnuPG署名もコミットメールアドレスと関連付けされています。
そのため、複数のメールアドレスを使い分ける場合にはそれらのメールアドレスに紐づいたGnuPGキーを用意する必要があります。対応方法は2通りあります。
- 複数のメールアドレスをひとつのGnuPGキーに紐づける
- 複数のメールアドレスに対してそれぞれGnuPGキーを作成する
前者のほうが、複数のGnuPGキーを扱わずにすむため管理しやすくなります。
ひとつのGnuPGキーへの複数のメールアドレスの関連付け
複数のメールアドレスをひとつのGnuPGキーに紐づけるには、まずひとつのメールアドレスに対してGnuPGキーを作成します。次に、そのGnuPGキーに対してメールアドレスの関連付けを追加します。
関連付けの追加は gpg --edit-key
コマンドで行います。この詳細は「GPG キーとメールの関連付け - GitHub Docs」に書いてあります。
それ以外は「GitのコミットにGnuPGで署名する - Qiita」で記載しているとおりです。
複数のGnuPGキーを扱う場合の設定
基本的には前述の方法が管理しやすいためオススメですが、複数のGnuPGキーを扱うパターンも紹介しておきます。
複数のメールアドレスに対してそれぞれGnuPGキーを作成するには、GnuPGキーの作成手順を必要な数だけ繰り返します。ひとつのGitHubアカウントには複数のGnuPGキーが登録できます。
そのパソコンでのGitコミットに使うデフォルトのGnuPG署名キーを設定するには、次のようにします。この設定は、~/.gitconfig
に保存されます。
git config --global user.signingkey "YOUR_GPG_KEY_ID"
また、特定のリポジトリでのGitコミットに使うGnuPG署名キーを設定するには、次のようにします。この設定は、そのリポジトリの .git/config
に保存されます。
git config user.signingkey "YOUR_GPG_KEY_ID"
これは「Git へ署名キーを伝える - GitHub Docs」に書いてあります。
まとめ
以上の内容を設定すれば、GitHubで複数のメールアドレスを使い分けることができます。
これを利用して、個人用のコミットには個人用のメールアドレスを使い、仕事用のコミットには仕事用のメールアドレスを使うことができます。ぜひ活用してください。