Настройка глобального gitignore (core.excludesFile)
Как настроить core.excludesFile, чтобы файлы вашего личного окружения — .DS_Store из macOS, файлы редакторов — игнорировались во всех репозиториях, и какой путь используется по умолчанию.
Файлы вроде .DS_Store, Thumbs.db, .idea/workspace.xml и *.swp появляются не из-за проекта, а из-за вашего компьютера и вашего редактора. Вместо того чтобы повторять такие правила в каждом репозитории, их достаточно один раз записать в глобальный gitignore.
Путь по умолчанию
Даже без дополнительной настройки git читает следующий файл как глобальный список игнорирования.
$XDG_CONFIG_HOME/git/ignore- Если
XDG_CONFIG_HOMEпуста или не задана —$HOME/.config/git/ignore
То есть в большинстве окружений 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 глобально или объединить их с шаблоном проекта.
На практике подойдёт такой критерий.
- Личный проект или команда, где можно правилом обязать всех настроить глобальный файл, — держите глобально.
- Если участников нельзя контролировать, как в open source, добавьте хотя бы
.DS_StoreиThumbs.dbи в проектный .gitignore.
Приоритет
Среди четырёх источников правил глобальный файл имеет самый низкий приоритет. Даже если глобально игнорируется *.log, при наличии !keep.log в проектном .gitignore побеждает проект. Если непонятно, какое правило сработало, выполните git check-ignore -v <путь>. Если в начале вывода стоит путь к глобальному файлу, решило глобальное правило.