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 pull с передачей логина и пароля

Декабрь 11, 2021 г.

Репозиторий почти всегда требует реквизитов доступа. И, если вы их не храните в локальной конфигурации, то скрипты, содержащие git pull, будут прерываться, запрашивая пару логин/пароль. Передать реквизиты с отдельным ключом нельзя, но можно задать ...

Читать

Организуем автодеплой изменений из репозитория для проекта на Drupal

Август 23, 2018 г.

Когда над проектом работает несколько разработчиков, то возникают определенные структурные и организационные вопросы. Каждый программист обычно работает ...

Читать

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

Июль 1, 2022 г.

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

Читать

Создание патча для модуля Drupal

Декабрь 4, 2017 г.

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

Читать
 

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

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



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