.gitignore
не удаляет ничего на вашем сервере. Вы сделали это!
Прочтите ваш вопрос еще раз. Вы запустили:
git rm -r --cached .
git add .
git commit
Первая команда говорит Git удалить все из индекса. В основном он готовит пустое рабочее дерево как следующий коммит.
Вторая команда добавляет рабочий каталог обратно в индекс, но из-за строк, которые вы только что добавили в .gitignore
, файлы, которые вы хотите игнорировать, больше не присутствуют в индексе.
Третья команда просто делает ваши изменения постоянными. Это означает, что только что созданный вами коммит не содержит файлов, которые вы только что добавили в .gitignore
.
Это происходит потому, что это цель .gitignore
: он сообщает Git, какие файлы не отслеживать (больше).
Поскольку они отслеживались в прошлом, файлы не удаляются из хранилища, они просто отсутствуют в последнем коммите (и во всех будущих коммитах). Вы можете восстановить их после запуска git pull
, запустив:
git checkout <commit_id> -- <file_path>
где <commit_id>
- это хэш последнего коммита, который содержал файлы (непосредственно перед тем, как вы добавили их имена к .gitignore
), а <file_path>
- путь к одному игнорируемому файлу, который вы хотите получить. Повторите для каждого игнорируемого файла.