#author("2023-05-16T15:59:23+09:00","default:ryuichi","ryuichi")
#author("2023-05-16T16:08:13+09:00","default:ryuichi","ryuichi")
* includeIfでgitconfigを読み分ける [#k30510ce]


** [#ve10aa3f]
** 現在どのgitconfigを読み込んでいるか確認 [#r6a65d7f]

 git config --list --show-origin --show-scope

** フォルダ、ファイル構成 [#j5b5c61c]
 C:\Users\<USER NAME\.gitconfig  # グローバルのgitconfig
 C:\tmp\my_gitconfig             # 読み分けるgitconfig
 C:\src\my_repo                  # 対象のリポジトリ
 C:\src\my_repo2                 # 同上
 C:\src\my_repo3                 # 同上

*** グローバルのgitconfigファイルのパス指定 [#ee43983f]

- 環境変数GIT_CONFIG_GLOBALで指定できる
- 例えば '''GIT_CONFIG_GLOBAL=C:\Git\gitconfig''' の場合、Cドライブ直下のGitの中のグローバルのgitconfigになる

*** Linuxのgitconfigのパス指定 [#o531b738]
- 環境変数XDG_CONFIG_HOMEが指定されている場合、それ以下のgitconfigが探索されて、存在しなければ'''$HOME/.gitconfig''' がグローバルのgitconfigになる
- 例えば '''XDG_CONFIG_HOME=~/.config''' の場合、 '''~/.config/git/config''' のconfigファイルがグローバルのgitconfigになる

** グローバルの.gitconfigのパス指定 [#q3339c39]

 [user]
    name = Taro
    email = taro@example.com
 [includeIf "gitdir/i:C:/src/"]
    path = "C:/tmp/my_gitconfig"

 [includeIf "gitdir:$(prefix)/home/"]
    path = "linux_gitconfig"


 [includeIf "gitdir:/mnt/c/src/**/*"]       # WSLでc:\src以下を対象にする場合
    path = "gitconfig/wsl.gitconfig"        # グローバルの.gitconfigが.config/git/configなら、
                                            # ここでのpathは.config/git/gitconfig/wsl.gitconfig

** 解説 [#b5ac05e9]
- 上の設定で、'''C:/src'''以下にあるリポジトリでは'''C:/tmp/my_gitconfig'''を読むようになる

*** 1. gitdirの書き方 [#xa766dbf]
- '''gitdir'''は'''gitdir/i'''として必ずケースインセンシティブにする
- '''gitdir/i'''の後にスペースを付けない
- '''C:/src/'''のように末尾に/スラッシュを付ける
- LinuxなどのUNIX系OSの場合は、'''/home/'''のように'''/'''から始めるパスの場合は'''$(prefix)'''を付けて'''$(prefix)/home/'''とする

*** 2. リポジトリフォルダの中でgitコマンドを実行する [#g5636ec5]
- リポジトリフォルダの中でgitコマンドを実行しないと上の設定は有効にならない
- すなわち、'''cd C:/src/my_repo'''した後に'''git config --list --show-origin'''などで設定を確認する

*** 3. pathの相対指定 [#cd514c91]
- my_gitconfigのパスはグローバルのgitconfigファイルの相対パスとしても書ける
- 例えばグローバルのgitconfigが'''C:\Users\<USER NAME\.gitconfig'''の場合、'''path = "dir1/my_gitconfig"'''は'''C:\Users\<USER NAME\dir1\my_gitconfig'''に相当する

** 参考 [#c0f79d14]

https://git-scm.com/docs/git-config#FILES

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS