← Все вопросы

Как удалить файл из git, но оставить его на диске?

Задан 4 месяца назад649 просмотров2 ответа
9

Случайно закоммитил .env с паролями и config.local. Хочу убрать их из репозитория, но НЕ удалять с компьютера — они мне нужны локально. Как удалить файл из git, оставив на диске?

2 ответа

11
✓ Принятый ответ — помог автору

Тебе нужен флаг --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 в .gitignoregit commit.

Частая ошибка: написать git rm .env без --cached. Тогда git удалит файл и из репозитория, и физически с диска — ты потеряешь свои локальные пароли. Ключевой флаг здесь именно --cached: «убрать из git, но оставить на компьютере».

И помни: даже после удаления из текущего коммита файл останется в истории прошлых коммитов. Если там были настоящие пароли — считай их скомпрометированными и смени их.

4

Разница в одну строку:

  • git rm файл → удалить из git и с диска.
  • git rm --cached файл → удалить из git, оставить на диске.

Если паролю/ключу важно исчезнуть из всей истории (а не только из последнего коммита), простого rm --cached мало — нужны инструменты вроде git filter-repo или BFG. Но проще всего: убрать из отслеживания, добавить в .gitignore и сменить утёкший пароль.

Ваш ответ

Войдите, чтобы ответить на вопрос.