Я пытаюсь удалить ранее отслеживаемый каталог из git, который работает, но он добавляется обратно с каждым последующим git add .
, git add -A
и т.д. Вот что я сделал:
Добавить в .gitignore в корень проекта:
node_modules
Выполните следующее:
git rm -r --cached node_modules
git commit -a -m "removed node_modules"
git push origin master
До сих пор так хорошо, что удаляет каталог из удаленного репозитория. Проблема в том, что когда я позже запускаю git status
, он сообщает мне, что каталог node_modules не проверен и продолжает добавлять его в будущие коммиты.
Что мне не хватает и/или как я могу найти корень моей проблемы?
Из здесь:
Команда git add не добавляет игнорируемые файлы по умолчанию.... Команда git add может использоваться для добавления игнорируемых файлов с параметром -f (force).
Дополнительная информация из комментариев:
Я отслеживаю файл .gitignore.
git check-ignore node_modules/
возвращает node_modules/как ожидалось.
Нет использования подмодулей.
Update:
Я создал образец, который, как представляется, реплицирует проблему, следуя приведенным выше шагам:
https://github.com/awhitehouse104/SampleRepo
Разрешение:
Чтобы обобщить ответ и комментарии ниже, проблема была в кодировке моего файла .gitignore. Я использовал echo 'node_modules' > .gitignore
для создания файла на окнах 8, и он появился как UTF-16 с спецификацией (согласно ответу ниже). После нескольких поисковых запросов Google кажется, что это кодировка по умолчанию с powershell, и я могу подтвердить, что сохранение, поскольку UTF-8, похоже, решило проблему.
TL;DR; Вероятно, не используйте этот метод создания файлов .gitignore или будьте готовы изменить кодировку
echo 'node_modules' > .gitignore