今日やったこと

  • 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 の優先順位を確認する