@sterjakov

Как в git локально заигнорить папку так чтобы при ее последующем изменении она больше не попадала в индекс?

Всем привет!

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

Пробовал добавить папку с модулями в локальный ~/.gitignore
Так же удалять git rm -r —cached node_modules
но после установки моих собственных модулей гит предлагает мне все же их добавить к комиту и убрать из индекса
выход конечно это просто не добавлять их в комит, жить конечно можно но очень неудобно

Может что кто посоветует?
  • Вопрос задан
  • 586 просмотров
Решения вопроса 1
sergey-kuznetsov
@sergey-kuznetsov Куратор тега Git
Автоматизатор
Изменения в папке сами в индекс не попадут, если вы этого не попросите.
А чтобы файлы в папке не мозолили глаза в списке изменений, временно заигнорьте их
git update-index --assume-unchanged node_modules/*
и добавьте саму папку в файл игнора тоже, чтобы новые файлы не видеть.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Lobotomist
@Lobotomist
Software Developer
Вообще ситуация выглядит странно и node_modules скорее всего из репозитория надо убирать. Далее по сути вопроса.

Для того, чтобы новые модули не отслеживались гитом самый простой вариант добавить их игнорирование для конкретного репозитория (будет работать только для вашего локального репозитория) в файл .git/info/exclude написать:
node_modules/*

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

Сложнее в случае, если вы изменяете уже отслеживаемые гитом файлы модулей. Чтобы ваши изменения не отслеживались гитом можно сказать ему, чтобы он игнорировал изменения в них. Для этого есть команда git update-index --skip-worktree <path>. Можно выполнить ее сразу для всех файлов в папке node_modules, а можно выборочно только для тех которые фактически изменены.

# для всех
git ls-files node_modules | xargs git update-index --skip-worktree
# для измененных
git ls-files -m node_modules | xargs git update-index --skip-worktree

git ls-files node_modules - выводит список файлов, отслеживаемых гитом в папке node_modules, с ключом -m только те, которые модифицированы.
xargs - выполняет соответствующую команду для каждого из этих файлов.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы