今更ながら include
節を設定すれば .gitconfig
の一部設定を別ファイルで管理できることを知ったので、その備忘録。
🧪使い方サンプル
例を見たほうが早いと思うので。
Example 1. include を使った場合の例
.gitconfig
# This is the config file.
[core]
quotepath = false
commitGraph = true
autocrlf = input
...
[include] (1)
path = ~/.config/git/config.d/alias.conf (2) (3)
path = ~/.config/git/config.d/ghq.conf
[includeIf "gitdir:~/ghq/test/"] (4)
path = ~/.config/git/config.d/test_user.conf
1 | 別ファイルから設定を取り込みたいときは include で指定する。 |
2 | path 変数に取り込むファイルのパス[1]を指定する。 |
3 | path 変数は複数指定できる。よって取り込ませたいファイルの数だけ指定する。 |
4 | ある条件下のみ取り込ませたい設定がある場合は、includeIf を用いる。この例では、指定したパス以下にある git リポジトリにおいて下記のファイルを取り込ませている。 |
~/.config/git/config.d/alias.conf
# Git aliases
[alias]
aliases = config --get-regexp alias
remotes = remote -v
stashes = stash list
...
~/.config/git/config.d/test_user.conf
# Test user
[user]
name = tester
email = tester@example.email.com
設定チェック
git config alias.aliases
config --get-regexp alias
git config user.name
Akiaki Susuki
cd ~/ghq/test/sample-project (1)
git config user.name
tester
1 | 上記 includeIf の条件を満たすパスであるため、設定が更新されている。 |
Example 2. CLI から include.path を設定する場合
git config --global --add include.path "/path/to/include/file" (1)
git config --get-regexp include.path (2)
include.path ~/.config/git/config.d/alias.conf
include.path ~/.config/git/config.d/ghq.conf
include.path /path/to/include/file
1 | path 変数は複数回記述されるため、--add オプションが必要になる。 |
2 | git config コマンドから include.path の値一覧を確認するには --get-regexp オプションを利用して検索する。 |
🍉include
および includeIf
について
include
include
節を使うことで別ファイルから .gitconfig
の設定を取り込むことができる。
path
変数に取り込ませたい設定ファイルのパスを指定する。
このとき相対パスも指定でき、include
が記述されたファイルを起点とした相対パスとなる。
また、チルダ(~
)によるパス指定もできる。
path
変数は複数回の設定ができるため、取り込ませるファイルの数だけ指定する。
includeIf
ファイルを取り込むときにある条件をつけたい場合は includeIf
を利用する。
.gitconfig
[includeIf "<conditional>"]
path = /path/to/file.inc
指定できる条件について
- gitdir:<pattern>
-
.git
ディレクトリのパスが指定した glob パターンと一致する場合に真となる。通常はリポジトリのパスを指定したいはずなので、パターンの末尾を
/
または/**
とすればいい[2]。
この場合、指定したパターンのパス以下にあるリポジトリすべてが対象となる。 - gitdir/i:<pattern>
-
大文字小文字を区別しない
gitdir
。 - onbranch:<pattern>
-
ブランチ名が glob パターンと一致する場合に真となる。