.gitignore не игнорирует — не работает — не применяется — как исправить. Решение
![]()
Файл .gitignore может не работать в случае, если клонированный вами репозиторий уже содержал правила для файлов и папок которые вы пытаетесь исключить (то есть они не были в .gitignore и не игнорировались — а вы резко захотели их игнорировать) — в этом случае внесение их в файл игнорирования само по не поможет — их нужно удалить из «контроля»
Что делать
-прейдите в папку с кодом (ваш локальный репозиторий) :
и удалите файл из контроля (например .htaccess):
Аналогично можно заставить игнорировать и сам .gitignore (если раньше не игнорировался):
Потом делаем Commit и ярлыки (если они есть — например в винде с использованием tortoisegit) покажут нам что удалённые из кэша файлы теперь игнорируются.
На основании документации по git:
.gitignore
If you create a file in your repository named .gitignore git will use its rules when looking at
files to commit. Note that git will not ignore a file that was already tracked before a rule was added to this file to ignore it. In such a case the file must be un-tracked, usually with
git rm —cached filename
Не игнорируются файлы в .gitignore
Читаю книгу Test-Driven Development with Python, во второй главе описывается создание git-репозитория. Я следую всем инструкциям, но мой файл .gitignore не игнорирует записанное в нём. В чём проблема?

![]()
![]()
Подозреваю, что вы добавили файлы в индекс раньше, чем начали игнорировать. То есть до той git add . , который на скриншоте, была еще одна такая команда. Чтобы узнать точно, не хватает git status перед добавлением.
Если файл уже был добавлен, то изменение в .gitignore не вызывает удаления из текущего индекса (что логично и безопасно).
Если файлы только добавлены, но еще не включены в коммит
В данном конкретном случае именно так и есть. При этом достаточно удалить их из индекса. Данная команда возвращает индекс к HEAD, то есть состоянию последнего коммита.
Вы можете заметить, что сам Git предлагает использовать другую команду:
В данном случае эти команды эквивалентны. Такое дублирование появилось в результате эволюционного развития функционала Git. Это в том числе отражено в документации и в сообщениях Git: где-то рекомендуется reset , где-то rm —cached .
Если игнорируемые файлы уже есть в последнем коммите
Возможна и такая ситуация, на всякий случай я опишу и ее. Здесь reset не сработает, нужен rm . Аргумент —cached заставляет Git удалить файл из индекса, но не трогать рабочую область. То есть он буквально индексирует удаление файла, хотя этого удаления не было. Если сделать это с файлом, который не игнорируется, то после коммита он будет в категории неотслеживаемых (untracked).
Если нужно убрать целую игнорируемую папку, добавляем ключ -r:
Эта удобная команда применяет rm ко всем файлам, указанным в .gitignore :