gitの設置ファイルである.gitconfig
では、[includeIf]
を指定することで特定の条件の時のみconfigの設定を有効にすることができます。
この記事では、[includeIf]
を指定したにもかかわらず、設定が有効にならない時の確認ポイントを説明します。
サンプル
設定
- .gitconfig
[user]
user = work
email = work@example.com
[includeIf "gitdir:~/project/private/project1"]
path = ~/.gitconfig_private
- .gitconfig_private
[user]
user = private
email = private@example.com
期待する振る舞い
以下のように、~/project/private
の中にあるリポジトリで作業した時のみ、.gitconfig_privateの設定が有効になるようにしたい。
$ mkdir ~/project/private
$ cd ~/project/private
$ mkdir project1
$ mkdir project2
$ cd project1
$ git init
$ git config user.name
private
確認ポイント
うまくいかない時のチェックポイントを列挙します。
パスの確認
includeIfに書いた、"gitdir:~/project/private/"
とpath = ~/.gitconfig_private
が合っているか確認します。
このパスは~/
を使ったホームからの相対パスを認識しますが、念のために絶対パスにしてみて確認してみます。
gitdirの中のディレクトリが/
で終わっているか
ディレクトリ指定が~/project/private
ではなく~/project/private/
と、スラッシュで完了していることを確認します。
git config
を実行しているディレクトリはgit管理下か
[includeIf]
が有効になっているのはgit管理下のディレクトリのみです。
例えば上記の期待する振る舞いの例だと~/project/private/project1
はgit init
しているので[includeIf]
が有効になります。ですが、~/project/private
や~/project/private/project2
のディレクトリでgit config user.name
を実行しても[includeIf]
の内容は反映されないので注意が必要です。
ちなみに、特定のディレクトリ以下をすべて対象にしたいときは[includeIf "gitdir:~/project/private/**"]
と、ワイルドカードを使うこともできます。