Почему .gitignore не работает?

Обычно файл уже отслеживается, правило находится в другом месте или шаблон не соответствует ожидаемому пути.

1. Проверьте, отслеживается ли файл

Правила применяются к файлам, которые намеренно не отслеживаются. Новый шаблон не удаляет из индекса файл, уже включённый в коммит.

git ls-files -- path/to/file

Если выведен путь, файл отслеживается. См. соответствующую статью:

Как игнорировать файлы, которые Git уже отслеживает?

2. Найдите сработавшее правило

Запустите проверку из репозитория с фактическим относительным путём. Вывод укажет файл правил и строку.

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

Для проверки уже отслеживаемого файла используйте --no-index:

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

3. Проверьте расположение и порядок

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

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

4. Проверьте другие источники

Git также читает .git/info/exclude и глобальный файл из core.excludesFile. Поэтому файл может игнорироваться без правила в .gitignore проекта. Проверьте глобальную настройку:

git config --get core.excludesFile

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

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