Увійти Реєстрація
Блог Серії
Кар'єра
Вакансії Компанії
Навчання
Документація Співбесіди Тестування Відео
Екосистема
Пакети Ресурси Проєкти Інструменти Події
Інше
Про нас Реклама

Як Git обирає налаштування: рівні system, global, local і умовні includeIf?

Git читає конфігурацію з кількох файлів. Пізніший рівень перекриває раніший:

Рівень Файл Прапорець
system /etc/gitconfig (чи в каталозі встановлення) --system
global ~/.gitconfig чи ~/.config/git/config --global
local .git/config репозиторію --local (за замовчуванням)
worktree .git/config.worktree --worktree
команда git -c key=value ... -
git config --global user.name "Olena Kovalenko"
git config user.email olena@company.com          # лише цей репозиторій
git config --list --show-origin                  # усі значення і звідки вони
git config --show-origin --get user.email

--show-origin - перший інструмент, коли «налаштування не працює»: видно, який файл перекрив значення.

Умовні включення - різні налаштування для роботи й особистих проєктів:

# ~/.gitconfig
[user]
    name = Olena Kovalenko
    email = olena@personal.dev

[includeIf "gitdir:~/work/"]
    path = ~/.gitconfig-work
# ~/.gitconfig-work
[user]
    email = olena@company.com
    signingkey = ~/.ssh/work_ed25519.pub

Усі репозиторії в ~/work/ автоматично отримують робочу пошту - більше ніяких комітів з особистою адресою в корпоративному репозиторії.

Умови includeIf:

  • gitdir: - шлях до репозиторію (gitdir/i: - без урахування регістру);
  • onbranch: - поточна гілка;
  • hasconfig:remote.*.url: - адреса віддаленого репозиторію, наприклад усі репозиторії з github.com/company/**.

Що важливо:

  • слеш у кінці gitdir:~/work/ означає «цей каталог і все всередині»;
  • .git/config не комітиться і не поширюється через клон - спільні налаштування команди передаються інакше (документація, скрипт налаштування, .gitattributes і .editorconfig у репозиторії);
  • у CI змінні оточення GIT_AUTHOR_NAME, GIT_COMMITTER_EMAIL перекривають конфігурацію.

Докладніше в документації: git config: умовні включення

Перевір себе

20 випадкових питань за спробу, після завершення - розбір кожної помилки

Схожі питання