Как полностью убрать файлы из .git репозитория?

Когда файлы были добавлены в репозиторий и перестали быть нужны, то их можно оттуда убрать. Но недостаточно просто взять и добавить файлы в .gitignore файл. Даже в этом случае файлы остаются в кэше репозитория в прошлых коммитах. Чтобы убрать файлы и из кеша нужно сделать следующие шаги:

1 шаг. Закоммитить все изменения

Прежде всего, в вашем репозитории не должно быть недобавленных в git изменений. Даже добавление файла в .gitignore должно быть уже закомичено.

2 шаг. Удалить файлы из кэша репозитория

Допустим, мы хотим удалить файл scripts.js, который каждый раз собирается автоматически из исходных файлов.

Чтобы убрать его из репозитория необходимо выполнить следующую команду:

Если нужно удалить из кэша репозитория несколько файлов, то их имена нужно перечислить через пробел друг за другом.

Очистка всего кэша репозитория

Если вы хотите стереть весь кэш репозитория, то можно выполнить эту же команду rm —cached для всего репозитория:

Флаг -r говорит, что rm будет обходить всё дерево каталогов, лежащих внутри текущей директории, путь к которой задан через символ «.». Флаг —cached сообщает, что файлы будут удалены только из кэша .git, сами файлы при этом останутся лежать на жестком диске и никуда не денутся.

После такой операции необходимо будет повторно добавить в репозиторий нужные файлы с помощью:

Или можете указать конкретные файлы, которые вам нужны. После добавления в репозиторий, изменения необходимо закоммитить:

Теперь ваш репозиторий чист.