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