はじめに
GitHubなどのリモートリポジトリサービスでは、リポジトリごとに正しいアカウント情報が必要です。
たとえば、あるプロジェクトではデフォルトのアカウント「default-user」(メール: default@example.com)で管理し、特定のプロジェクトだけ「work-user」(メール: work@example.com)を使用したい場合、グローバル設定だけでは対応が難しくなります。
Git 2.13以降では、includeIf
機能を使って条件に応じた設定ファイルを自動的に読み込むことができるため、プロジェクトごとに異なるユーザー情報を簡単に適用することが可能になりました。
設定手順
1. 各アカウント用のGit設定ファイルを作成
まず、使用する各アカウントごとに専用の設定ファイルを用意します。
work-user用の設定ファイル
ターミナルまたはVSCodeのターミナルで、以下の内容を ~/.gitconfig-work
として保存します。
[user]
name = work-user
email = work@example.com
default-user用の設定ファイル(任意)
今回はグローバルのデフォルト設定として使用するため、~/.gitconfig
に直接設定するか、別ファイルにしても構いません。ここではグローバル設定に直接記述します。
2. グローバル設定ファイル(~/.gitconfig)の編集
次に、グローバル設定ファイルである ~/.gitconfig
を編集し、条件に応じた設定ファイルを自動で読み込むようにします。
今回は、特定の2つのプロジェクトに対して work-user の設定を適用し、その他のリポジトリではデフォルトの設定を使用するようにします。
-
ターミナルで以下のコマンドを実行してVSCodeで
~/.gitconfig
を開きます。code ~/.gitconfig
-
既存のユーザー設定をデフォルトとして「default-user」に設定し、特定のプロジェクトには
includeIf
を使って work-user の設定を上書きするように記述します。 -
たとえば、以下のように編集します。
[user] name = default-user email = default@example.com [includeIf "gitdir:/Users/username/Projects/Project-Alpha/"] path = ~/.gitconfig-work [includeIf "gitdir:/Users/username/Projects/Project-Beta/"] path = ~/.gitconfig-work [filter "lfs"] smudge = git-lfs smudge -- %f process = git-lfs filter-process required = true clean = git-lfs clean -- %f [http] postBuffer = 524288000
ポイント
デフォルト設定:
includeIf にマッチしないリポジトリでは、グローバル設定の「default-user」(default@example.com)の情報が適用されます。特定プロジェクトの上書き:
/Users/username/Projects/Project-Alpha/
および/Users/username/Projects/Project-Beta/
内のリポジトリでは、includeIf
により~/.gitconfig-work
の設定が自動で読み込まれ、グローバル設定が上書きされます。絶対パスについて:
絶対パスを使用することで、リポジトリの位置を明確に指定できるため安心です。末尾にスラッシュを入れることを忘れずに。
3. SSH設定の自動切り替え(任意)
GitHubなどでSSH認証を使用している場合、各アカウントごとに異なるSSHキーを設定すると、リモートへのアクセスも自動で切り替えられます。以下はその一例です。
-
~/.ssh/config
を開き、以下のように設定します。# work-user用の設定 Host github-work HostName github.com User git IdentityFile ~/.ssh/id_rsa_work # default-user用の設定 Host github-default HostName github.com User git IdentityFile ~/.ssh/id_rsa_default
-
リモートリポジトリのURLを、設定したホストエイリアスに合わせて変更します。たとえば、work-user用のリポジトリは次のように設定します。
git remote set-url origin git@github-work:username/repo.git
4. 設定の反映確認
設定が正しく反映されているか、各プロジェクトのディレクトリに移動して以下のコマンドを実行し、ユーザー名とメールアドレスが正しいか確認します。
git config user.name
git config user.email
対象プロジェクトで正しい情報が表示されれば、設定は成功です。もし反映されない場合は、Gitのバージョンやパスの記述、ターミナルやVSCodeの再起動などを確認してください。
まとめ
この記事では、GitのincludeIf
機能を活用し、プロジェクトごとに自動でユーザー情報を切り替える方法を解説しました。これにより、複数のアカウントを使い分けている場合でも、リポジトリごとの設定ミスを防ぎ、スムーズなコミットやデプロイが実現できます。
MacやVSCode環境での設定手順も紹介しましたので、ぜひ自分の開発環境に合わせて活用してください。