Gitを使い始めたばかりのときや、新しい環境で作業する際、「ユーザー名とメールアドレスの設定」は誰もが一度はつまづくポイントです。
また、「会社用」と「個人用」でアカウントを分けて使いたいけれど、どう切り替えるのか分からないという悩みもよく聞きます。
この記事では、Gitで必須となる user.name と user.email の基本的な登録方法から、複数のアドレスを自動で使い分けるための高度な設定までを解説しています。
Gitで複数のメールアドレスとユーザー名を切り分けることができるか?
Gitではメールアドレスとユーザー名を複数登録し、プロジェクトや状況に応じて使い分けることができます。
nameとemailは必須か?
Gitにおいてコミットを行う際に、ユーザーのメールアドレス(user.email)と名前(user.name)は必須です。
これは、すべてのコミットには「誰がいつその変更を行ったか」という情報を含める必要があるためです。この情報がないと、Gitはコミットを拒否し、メールアドレスと名前を登録するように求めてきます。
Author identity unknown
*** Please tell me who you are.
Run
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
to set your account's default identity.
Omit --global to set the identity only in this repository.nameとemailは何に使うか?
git commit コマンドを実行して新しいコミットを作成すると、そのコミットオブジェクトのメタデータ(付随情報)として、設定されている user.name と user.email が記録されます。
この情報は、リポジトリの履歴を永続的に記録するもので、後から変更することは困難です(履歴を書き換える特殊なコマンドを使わない限り)。
実際には、例えば、git log でコミット履歴を確認したとき、以下のように表示される「Author」(作成者)の情報として使われます。
commit a1b2c3d4e5f67890...
Author: Your Name <you@example.com> <-- ここに表示される
Date: Fri Oct 25 10:00:00 2024 +0900
コミットメッセージの本文他にも、タグ(Tag)や署名(Signing)の作成時にも保存されます。
- タグ付け (git tag)
タグを作成する際、そのタグに付随する情報(誰がタグを打ったか)として使われることがあります。特に、タグに署名(Signed Tag)を付ける場合は、ユーザー情報が必須となります。
- コミットの署名 (git commit -S)
コミットの信頼性を保証するためにGPGキーなどでデジタル署名をする際、署名者が誰であるかを特定するためにこの情報が使われます。
Gitのユーザー情報の使い分け方
Gitのユーザー情報の使い分け方は主に以下の3つの方法があります。
- グローバル設定:
--global - ローカル設定:(–globalなし)
- 条件付き設定:
--global includeIf
なお、それぞれの優先順位や主な用途は以下のようになっています。
| 設定方法 | 適用範囲 | 優先順位 | 主な用途 |
| ローカル設定:(–globalなし) | 特定の1つのリポジトリ | 1位 | 個別のプロジェクトでの特別な情報 |
条件付き設定: --global includeIf | 条件に一致するリポジトリ群 | 2位 | 会社/個人などグループ単位での自動切り替え |
グローバル設定: --global | すべてのリポジトリ | 3位 | デフォルト(通常)の情報 |
グローバルにユーザー情報を登録する方法
–globalオプションを使ってユーザー登録をすると、Git環境全体に適用するデフォルトの設定をすることができます。
対象のリポジトリに他の設定がない限り、このユーザー情報を使用します。
git config --global user.email "email@example.com"
git config --global user.name "Name"--global で設定した Git のユーザー情報は、ホームディレクトリ内にあるグローバル設定ファイルに保存されています。
通常、以下の場所にあります。
| OS | ファイルパス |
| macOS / Linux | ~/.gitconfig |
| Windows | C:\Users\あなたのユーザー名\.gitconfig |
ローカルにユーザー情報を登録する方法
最も優先度が高いのが、ローカルに登録したユーザー情報です。
対象のレポジトリに、–globalをつけずにnameやemailを登録した場合は、その情報が優先的に使用されます。
git config user.email "email@example.com"
git config user.name "Name"--global を付けずに git config を実行した場合、そのリポジトリのルートディレクトリ直下にある非表示ディレクトリ .git の中の config ファイルに保存されます。
条件付きでユーザー情報を登録する方法
グローバルとローカルの中間で、特定のディレクトリで使うユーザー情報を登録することができます。
そのためには、専用の設定ファイルを作成します。例えば、workというディレクトリ用の設定を保存するファイルを「.gitconfig-work」とします。
ここに以下のように記述します。
[user]
email = work_email@company.com
name = Work Name
グローバルにこのファイルの条件を追加します。
git config --global includeIf.gitdir:~/work/.path .gitconfig-workこれにより、~/work/ディレクトリ以下のリポジトリにいるときは、自動的に~/.gitconfig-workファイルの設定が読み込まれ、上書きされます。
設定の変更方法
既に設定してあるnameやemailを変更したい場合は、再度同じコマンドを実行します。
例えば、グローバルの情報を変更したい場合は以下を実行します。
git config --global user.email "new-email@example.com"
git config --global user.name "new-Name"現在の情報の確認方法(–list)
全ての設定を確認した場合は以下のコマンドを実行します。
git config --list
指定した情報を個々に確認したい場合は、最後の文字列なしでコマンドを入力します。
# グローバルな名前を確認
git config --global user.name
# ローカルなメールアドレスを確認
git config user.email
