guide

Настройка глобального gitignore (core.excludesFile)

Как настроить core.excludesFile, чтобы файлы вашего личного окружения — .DS_Store из macOS, файлы редакторов — игнорировались во всех репозиториях, и какой путь используется по умолчанию.

Файлы вроде .DS_Store, Thumbs.db, .idea/workspace.xml и *.swp появляются не из-за проекта, а из-за вашего компьютера и вашего редактора. Вместо того чтобы повторять такие правила в каждом репозитории, их достаточно один раз записать в глобальный gitignore.

Путь по умолчанию

Даже без дополнительной настройки git читает следующий файл как глобальный список игнорирования.

То есть в большинстве окружений macOS и Linux достаточно просто создать файл ~/.config/git/ignore.

mkdir -p ~/.config/git
printf '.DS_Store\n*.swp\n.idea/workspace.xml\n' >> ~/.config/git/ignore

Другой файл: core.excludesFile

Чтобы использовать файл по произвольному пути, задайте core.excludesFile. Если это значение задано, git читает указанный файл вместо пути по умолчанию.

# macOS / Linux
git config --global core.excludesFile ~/.gitignore_global

# Windows (PowerShell)
git config --global core.excludesFile "$env:USERPROFILE\.gitignore_global"

Проверить, что настройка применилась, можно такой командой.

git config --global --get core.excludesFile

Если ничего не выводится, значение не задано, и используется путь по умолчанию, указанный выше.

Что держать в глобальном файле

В глобальный файл уместно помещать личные файлы, которые появляются одинаково, над каким бы проектом вы ни работали.

ВидПримерыРекомендуемый шаблон
Операционная система.DS_Store, ._*, Thumbs.db, desktop.ini, *~macOS, Windows, Linux
Личное состояние редактора и IDE*.swp, .idea/workspace.xml, личные файлы в .vscode/*Vim, JetBrains, VisualStudioCode
Личные инструменты.envrc (direnv), личная папка заметокнаписать самостоятельно

Выберите в генераторе только шаблоны вроде macOS и JetBrains и скопируйте результат — его можно сразу использовать как содержимое глобального файла.

Напротив, результаты сборки, папки зависимостей и секреты помещают не в глобальный, а в проектный .gitignore: эти правила должны применяться у всех, кто получает репозиторий.

Ограничения глобального подхода

Глобальный gitignore действует только на вашем компьютере. Если коллега не настроил глобальный файл, его .DS_Store по-прежнему может попасть в коммит. Поэтому и репозиторий шаблонов GitHub описывает оба варианта: разместить шаблоны Global глобально или объединить их с шаблоном проекта.

На практике подойдёт такой критерий.

Приоритет

Среди четырёх источников правил глобальный файл имеет самый низкий приоритет. Даже если глобально игнорируется *.log, при наличии !keep.log в проектном .gitignore побеждает проект. Если непонятно, какое правило сработало, выполните git check-ignore -v <путь>. Если в начале вывода стоит путь к глобальному файлу, решило глобальное правило.

Источники

← НазадПриоритет правил gitignore и отрицающие шаблоны (!)