Использование Условных Включений Git для Нескольких Конфигураций
При работе с несколькими репозиториями Git часто требуются разные настройки для каждого контекста. Например, вы можете использовать личную электронную почту для пет-проектов и рабочую — для корпоративных. Хотя Git можно настроить глобально или для каждого репозитория, ручное управление этими настройками становится утомительным и подверженным ошибкам.
Функция условных включений Git решает эту проблему, автоматически применяя различные конфигурации на основе таких критериев, как расположение репозитория, удалённый URL или имя ветки. Это гарантирует, что правильные настройки всегда будут использоваться без ручного вмешательства.
Вот практический пример применения определённой конфигурации при работе с вашими личными репозиториями GitHub:
[includeIf "hasconfig:remote.*.url:https://github.com/myname/*"]
path = .gitconfig-github-personal
Когда Git обнаруживает удалённый URL, соответствующий этому шаблону, он автоматически добавляет настройки из файла .gitconfig-github-personal, который может содержать ваш личный email и ключ подписи.
Git поддерживает несколько типов условий для условных включений, каждый из которых предназначен для разных случаев использования.
1.
gitdir — Сопоставление по пути к репозиториюУсловие gitdir сопоставляет репозитории на основе пути к их файловой системе. В Unix-подобных системах оно чувствительно к регистру.
[includeIf "gitdir:~/personal/"]
path = .gitconfig-personal
[includeIf "gitdir:~/work/"]
path = .gitconfig-work
Это применит .gitconfig-personal ко всем репозиториям в ~/personal/ и .gitconfig-work – к репозиториям в ~/work/.
gitdir/i аналогичен для нечувствительного к регистру сопоставления.2.
onbranch – Сопоставление по текущей веткеУсловие onbranch применяет конфигурацию на основе ветки, для которой сделан checkout:
[includeIf "onbranch:main"]
path = .gitconfig-production
[includeIf "onbranch:feature/**"]
path = .gitconfig-development
Это полезно для применения различных настроек при работе с ветками production и development.
3.
hasconfig — Сопоставление с существующей конфигурациейУсловие hasconfig проверяет существование определённого значения конфигурации и его соответствие шаблону. Это особенно полезно для сопоставления удалённых URL:
[includeIf "hasconfig:remote.*.url:https://github.com/myname/*"]
path = .gitconfig-github-personal
[includeIf "hasconfig:remote.*.url:git@company.com:*/**"]
path = .gitconfig-company
Это позволяет применять различные конфигурации в зависимости от того, где размещён ваш репозиторий, независимо от его локального пути.
Источник: https://www.meziantou.net/using-git-conditional-includes-for-multiple-configurations.htm