Почему файл игнорируется глобальными правилами Git?

Файл может игнорироваться без подходящего правила в .gitignore проекта. Прежде чем менять настройки, найдите источник.

1. Определите правило

Из корня замените path/to/file реальным путём неотслеживаемого файла:

git check-ignore -v -- path/to/file

Подробный вывод показывает файл-источник, строку и шаблон: .gitignore, .git/info/exclude или глобальный файл. ! возвращает путь. Отсутствие вывода также может означать, что файл уже отслеживается; проверьте отдельно.

2. Найдите настроенный глобальный файл

Проверьте действующее значение core.excludesFile и задающий его файл конфигурации:

git config --show-origin --get core.excludesFile

Пустой вывод с кодом 1 означает, что настройка не задана, а не что глобальные исключения отключены. Git также проверяет $XDG_CONFIG_HOME/git/ignore, либо $HOME/.config/git/ignore, если XDG_CONFIG_HOME пуст или не задан. Начните с источника, указанного check-ignore.

3. Измените нужный источник и проверьте

Общие правила хранятся в .gitignore; личные для одного репозитория — в .git/info/exclude, для нескольких — в глобальном файле. Глобальные изменения влияют и на другие репозитории; не удаляйте всю настройку ради одного пути. .gitignore приоритетнее .git/info/exclude и core.excludesFile. Исключение проекта может переопределить менее приоритетное правило, если родительские каталоги не исключены. Повторите проверку реального пути:

git check-ignore -v -- path/to/file

Почему ! не сохраняет файл в игнорируемом каталоге?

Точное поведение и подробности описаны в официальных источниках: Документация Git · Документация git check-ignore · Документация по настройке Git