複数の組織に属していてレポジトリによって git commit 時のメールアドレスを使い分けたい場合がある。
これまでは ~/.gitconfig
で設定したデフォルトではないメールアドレスを使いたいレポジトリごとに git config user.email=project-specific@example.com
のようにメールアドレスを設定していた。
レポジトリごとに設定しないといけないので結構面倒だ。
特定のメールアドレスを使うレポジトリは決まったディレクトリ以下に置くことが多いので、親ディレクトリレベルでメールアドレスを設定できたらいいな、と思っていた。
これ絶対やり方あるよな、と思いたって検索したら出てきたのでメモ。
Conditional include を使うと、特定条件を満たす場合のみ別の config を include することができる。
条件として .git
ディレクトリの場所を指定できる。例えば gitdir:/foo/bar/
の場合は /foo/bar/
以下に .git
ディレクトリがあれば include される。
というわけで仕事用のメールアドレスを設定したかったので、次のようにした。
[includeIf "gitdir:~/gitWorkspace/for/work/"]
path = ~/.gitconfig.work
のように ~/.gitconfig
に書いておき、 ~/.gitconfig.work
に
[user]
email = work@example.com
のように書いた。
git config の内容は最後に出てきたものが優先されるので、 includeIf
をデフォルトのメール設定より下に書くことにより、仕事用のディレクトリにチェックアウトしたものだけ仕事用のメールアドレスになる。