Решение, упомянутое в " .gitignore файле, не игнорирующем ", является немного экстремальным, но должно работать:
# rm all files
git rm -r --cached .
# add all files as per new .gitignore
git add .
# now, commit for new .gitignore to apply
git commit -m ".gitignore is now working"
(, убедитесь, что вы сначала зафиксировали свои изменения, которые выхотите сохранить , чтобы избежать любых инцидентов, так как jball037 комментирует ниже .
Опция --cached
сохранит ваши файлы без изменений на вашем диске.)
У вас также есть другое, более детальное решение в посте блога " Заставить Git игнорировать уже отслеженные файлы ":
git rm --cached `git ls-files -i --exclude-standard`
Bassim предлагает в своем редакторе :
Файлы с пробелами в путях
В случае, если вы получите сообщение об ошибке, например fatal: path spec '...' did not match any files
, могут быть файлы спробелы в их пути.
Вы можете удалить все остальные файлы с помощью опции --ignore-unmatch
:
git rm --cached --ignore-unmatch `git ls-files -i --exclude-standard`
, но несопоставленные файлы останутся в вашем хранилище и должны будутбыть удалены явным образом, заключив их путь в двойные кавычки:
git rm --cached "<path.to.remaining.file>"