0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Gitのユーザー設定をプロジェクトごとに自動で切り替える方法

Posted at

はじめに

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 の設定を適用し、その他のリポジトリではデフォルトの設定を使用するようにします。

  1. ターミナルで以下のコマンドを実行してVSCodeで ~/.gitconfig を開きます。

    code ~/.gitconfig
    
  2. 既存のユーザー設定をデフォルトとして「default-user」に設定し、特定のプロジェクトには includeIf を使って work-user の設定を上書きするように記述します。

  3. たとえば、以下のように編集します。

    [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キーを設定すると、リモートへのアクセスも自動で切り替えられます。以下はその一例です。

  1. ~/.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
    
  2. リモートリポジトリの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環境での設定手順も紹介しましたので、ぜひ自分の開発環境に合わせて活用してください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?