TGViewer
.NET Разработчик .NET Разработчик @netdeveloperdiary · 6.75K subscribers
Post #2975 2.56K
День 2474. #ЗаметкиНаПолях #Git
Использование Условных Включений 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
  • 👍 26
More from @netdeveloperdiary
  1. Sep 30, 2026Post #3356
  2. Sep 29, 2026Фото 3 (с) Анатолий Кулаков
  3. Sep 29, 2026День 2799. Конференция DotNext 2026. Часть 1 25 и 26 сентября в Москве прошла очередная ко…
  4. Sep 28, 2026День 2798. #Оффтоп Утиная Типизация в C# с Помощью Перехватчиков. Часть 2 Некоторое время…
  5. Sep 27, 2026День 2797. #ЗаметкиНаПолях #AI Рабочий процесс с Copilot для .NET. Окончание Начало Продол…
  6. Sep 26, 2026День 2796. #ЗаметкиНаПолях #AI Рабочий процесс с Copilot для .NET. Продолжение Начало Три…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →