GIT: перестать отслеживать файл или папку

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

  • вы по ошибке закоммитили файлы логов или временные данные;
  • в проекте появилась папка с кэшем;
  • какие-то данные должны оставаться только локально (например, настройки IDE).

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

Убрать папку из отслеживания

Разбор команды:

  • git rm — удалить из индекса;
  • -r — рекурсивно по всем вложенным файлам и папкам;
  • --cached — удалять только из индекса, не трогая файлы в рабочей директории.

После этого папка my-folder останется на диске, но её содержимое больше не будет отслеживаться GIT.

Убрать все файлы внутри папки, но не саму папку

Иногда нужно оставить сам каталог в репозитории (например, uploads/ или storage/), но очистить его содержимое.

-- (две черты) — это специальный разделитель аргументов.

  • Он нужен, чтобы GIT понимал, что всё, что идёт после него, — это именно имена файлов/папок, а не опции команды.
  • Например, если у вас есть файл с именем --test.txt, без этого разделителя GIT подумает, что это флаг.
  • В нашем случае -- избыточен, но это рекомендованный приём безопасности, чтобы команды работали одинаково при любом имени пути.

Теперь папка будет пустой в репозитории, но сама директория сохранится.

Убрать отдельный файл из индекса

Точно также как и с папкой, только без флага -r (рекурсии).

Добавить в .gitignore

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

Итоговый порядок действий

  1. Удаляем ненужный файл/папку из индекса (git rm --cached).
  2. Делаем коммит с изменением.
  3. Добавляем путь в .gitignore, чтобы GIT больше не пытался отслеживать эти файлы.

Мало букафф? Читайте есчо !

GIT workflow или как работать с проектом

Апрель 2, 2024 г.

Как использовать GIT, может зависеть от многих факторов, например как проходит тестирование, работает ли целая команда над проектом или один разработчик соло. Соло разработка Концепция работы с GIT в случае одного разработчика сводится обычно ...

Читать

Удалить новые (untracked) файлы в git

Июль 31, 2024 г.

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

Читать

Как отменить последний коммит в GIT

Ноябрь 24, 2018 г.

Не часто, но бывает необходимо отменить последний выполненный коммит. В зависимости от того, насколько все плохо можно действовать по-разному. Ситуация ...

Читать

Как сравнить два произвольных файла не включенных в репозиторий средствами git diff

Июль 1, 2022 г.

Утилита Git diff может сравнивать не только изменения между ветками, но и вообще произвольные объекты файловой системы, которые даже не включены в репозиторий. ...

Читать
 

Комментарии к «GIT: перестать отслеживать файл или папку»

Понравилась статья? Есть вопросы? - пишите в комментариях.



Комментарий: