Как удалить файл из git, но оставить его на диске?
Случайно закоммитил .env с паролями и config.local. Хочу убрать их из репозитория, но НЕ удалять с компьютера — они мне нужны локально. Как удалить файл из git, оставив на диске?
2 ответа
Тебе нужен флаг --cached у команды git rm. Он удаляет файл только из отслеживания git, а сам файл на диске остаётся.
Для одного файла:
git rm --cached .env
Для целой папки — добавь -r (рекурсивно):
git rm -r --cached node_modules
После этого git будет считать файл удалённым из репозитория. Закоммить это изменение:
git commit -m "убрал .env из отслеживания"
Чтобы файл больше не лез обратно в коммиты, сразу добавь его в .gitignore:
.env
Итоговый порядок: git rm --cached .env → вписать .env в .gitignore → git commit.
Частая ошибка: написать git rm .env без --cached. Тогда git удалит файл и из репозитория, и физически с диска — ты потеряешь свои локальные пароли. Ключевой флаг здесь именно --cached: «убрать из git, но оставить на компьютере».
И помни: даже после удаления из текущего коммита файл останется в истории прошлых коммитов. Если там были настоящие пароли — считай их скомпрометированными и смени их.
Разница в одну строку:
git rm файл→ удалить из git и с диска.git rm --cached файл→ удалить из git, оставить на диске.
Если паролю/ключу важно исчезнуть из всей истории (а не только из последнего коммита), простого rm --cached мало — нужны инструменты вроде git filter-repo или BFG. Но проще всего: убрать из отслеживания, добавить в .gitignore и сменить утёкший пароль.