Если вы неправильно настроили .gitignore и файлы (например, кэш-файлы, настройки и т. д.), которые уже отслеживаются git, остаются, то даже после изменения .gitignore уже отслеживаемые файлы автоматически не игнорируются.
В этом случае вы можете решить проблему, следуя приведенной ниже процедуре.

Изображение отмены отслеживания ненужных файлов в Git


1. Добавить файлы (или директории), которые нужно игнорировать, в .gitignore

Пример:

# .gitignore
*.log
__pycache__/
.env

2. Отменить отслеживание уже отслеживаемых файлов untrack (т.е. сделать так, чтобы git больше не отслеживал их)

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

git rm --cached .env
  • Опция --cached позволяет оставить локальный файл, но отменить его отслеживание в git.

  • Если это папка (например, __pycache__/), выполните так:

    bash git rm -r --cached __pycache__/


3. Закоммитить изменения

git add .gitignore
git commit -m "Обновить .gitignore и удалить ненужные отслеживаемые файлы"

Таким образом, в дальнейшем git будет игнорировать указанные файлы/папки.
(Однако они останутся в истории коммитов, но не будут отслеживаться впредь.)


Как отменить отслеживание нескольких файлов одновременно?

Чтобы отменить отслеживание всех файлов, добавленных в .gitignore, можно сделать это следующим образом:

git rm -r --cached .
git add .
git commit -m "Применить .gitignore к существующим файлам"
  • Этот метод переставляет все файлы, поэтому будьте осторожны! (Проверьте изменения, чтобы избежать нарушений в истории коммитов!)

Примечание/Совет

  • Можно проверить с помощью git status, успешно ли применено состояние untracked!

  • Чтобы полностью удалить уже загруженные в remote (например, GitHub) конфиденциальные файлы, могут потребоваться специальные инструменты, такие как git filter-branch или BFG Repo-Cleaner.


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