🐺
git configを使った複数GitHubアカウントの管理
はじめに
複数のGitHubアカウントを使い分けている場合、ディレクトリごとに異なるアカウントでコミットしたいことがあります。
.gitconfigのincludeIfディレクティブを使用することで、ディレクトリ別にGitの設定を切り替えることができます。
includeIfディレクティブの活用
基本的な設定
メインの.gitconfigファイルに以下のように記述します:
[user]
name = mainuser
email = main@example.com
[includeIf "gitdir:~/projects/sub/"]
path = ~/.gitconfig_sub
別設定ファイルの作成
~/.gitconfig_subファイルを作成し、サブアカウント用の設定を記述:
[user]
name = subuser
email = sub@example.com
動作の仕組み
- デフォルトでは
mainuserとして動作 -
~/projects/sub/ディレクトリ以下のリポジトリでは自動的にsubuserの設定が適用される -
gitdir:の条件にマッチするディレクトリでのみ、指定した設定ファイルが読み込まれる
gitdirの条件
- パターンが
~/で始まる場合、~は環境変数HOMEの内容で置き換えられる。 - パターンが
./で始まる場合、現在の設定ファイルを含むディレクトリに置き換えられます。 - パターンが
~/、./、/のいずれかで始まらない場合、/が自動的に付加される。例えば、パターンfoo/barは/foo/barとなり、/any/path/to/foo/barにマッチする。 - パターンが
/で終わる場合、**が自動的に追加される。例えば、パターンfoo/はfoo/**になる。つまり、"foo"とその中のすべてに再帰的にマッチする。
以下は1,4が適用される例です
[includeIf "gitdir:~/projects/sub/"]
設定の確認方法
設定が正しく適用されているか確認する方法
# 現在の設定を確認
git config --list
# ユーザー名とメールアドレスを個別に確認
git config user.name
git config user.email
公式リファレンス
Discussion