git config includeIf で仕事用・個人用の設定を自動で切り替える
Git の includeIf を使って、ディレクトリごとに user.name や user.email を自動で切り替える方法を整理する
今日やったこと
- Git の
includeIfについて確認した includeIfが.gitconfigの中に書く条件付き読み込み設定であることを確認した- 仕事用・個人用で Git のユーザー名やメールアドレスを自動で切り替える方法を整理した
- ディレクトリごとに別の Git 設定ファイルを読み込む運用を確認した
学んだこと
includeIf とは
includeIf は、条件に応じて別の Git 設定ファイルを読み込むための仕組み。
git config コマンドのオプションとして一時的に使うものではなく、基本的には .gitconfig の中に書く設定項目である。
たとえば、以下のように書く。
[includeIf "gitdir:~/work/"]
path = ~/.gitconfig-work
これは、Git リポジトリの場所が ~/work/ 配下にある場合に、追加で ~/.gitconfig-work を読み込むという意味になる。
仕事用・個人用で設定を分ける
たとえば、以下のようにディレクトリを分けている場合を考える。
~/work/
~/private/
この場合、メインの .gitconfig に以下のように書いておく。
[includeIf "gitdir:~/work/"]
path = ~/.gitconfig-work
[includeIf "gitdir:~/private/"]
path = ~/.gitconfig-private
そして、仕事用の設定を ~/.gitconfig-work に書く。
[user]
name = Reo Komatsubara
email = work@example.com
個人用の設定は ~/.gitconfig-private に書く。
[user]
name = reotech
email = private@example.com
これにより、~/work/ 配下のリポジトリでは仕事用の名前とメールアドレスが使われ、~/private/ 配下のリポジトリでは個人用の名前とメールアドレスが使われる。
何が便利なのか
新しいプロジェクトを clone するたびに、毎回以下のようなコマンドを打たなくてよくなる。
git config user.name "Your Name"
git config user.email "your@example.com"
リポジトリを置くディレクトリさえ決めておけば、Git が自動で適切な設定を読み込んでくれる。
特に、会社用リポジトリに個人用メールアドレスでコミットしてしまうミスや、個人用リポジトリに会社用メールアドレスでコミットしてしまうミスを防ぎやすくなる。
git config コマンドとの関係
includeIf は、git config コマンドのオプションというより、.gitconfig の中に書く条件付きの読み込み設定である。
ただし、git config コマンドを使って includeIf の設定を書き込むこと自体はできる。
git config --global includeIf.gitdir:~/work/.path ~/.gitconfig-work
ただ、この書き方は少し分かりにくいため、最初は .gitconfig を直接編集して理解する方がよさそう。
次にやること
- 実際に
~/.gitconfig-workと~/.gitconfig-privateを作成して動作確認する git config user.emailで、リポジトリごとに読み込まれているメールアドレスを確認する- 既存リポジトリのローカル設定と
includeIfの優先順位を確認する