Git - везде игнорировать папку node_modules


368

У меня есть проект, содержащий несколько других проектов:

  • Основной проект
    • Мини проект 1
    • Мини проект 2

Все содержащие node_modulesпапки. Я хочу, чтобы git игнорировал папку независимо от того, откуда она запускается из корневой папки. Нечто подобное добавить в .gitignore:

*node_modules/*

Ответы:


748

Добавь это

node_modules/

в .gitignoreфайл игнорировать все каталоги, вызываемые node_modulesв текущей папке и любых подпапках


какой исключительный путь сделать то же самое для кармы?
SuperUberDuper


8
См. Ответ @ AndrewSchreiber, если вы ранее добавили папку git для node_modules. Вам нужно удалить его из кэша с помощью «git rm -r --cached node_modules».
Каспер

176

Используйте универсальный однострочник в терминале в каталоге проекта:

коснитесь .gitignore && echo "node_modules /" >> .gitignore && git rm -r --cached node_modules; мерзавец статус

Это работает независимо от того, создали вы .gitignoreили нет, независимо от того, добавили вы node_modulesв git tracking или нет.

Затем зафиксируйте .gitignoreизменения.

объяснение

touchсгенерирует .gitignoreфайл, если он еще не существует.

echoи >>добавится node_modules/в конце .gitignore, в результате чего node_modulesпапка и все подпапки будут проигнорированы.

git rm -r --cachedудаляет node_modulesпапку из git control, если она была добавлена ​​ранее. В противном случае будет показано предупреждение pathspec 'node_modules' did not match any files, которое не имеет побочных эффектов, и вы можете спокойно его игнорировать. Флаги делают удаление рекурсивным и включают кеш.

git statusотображает новые изменения. .gitignoreПоявится изменение для , но node_modulesне появится, так как оно больше не отслеживается git.


5
touchне должен быть необходим здесь: >>создаст файл, если он не существует.
Лионелло

touchнеобходим. >>вернется no such file or directory: .gitignoreиначе.
Эндрю Шрайбер

1
Хм, похоже, отличается от ОС к ОС
Лионелло

MacOS, кажется, не нуждается в прикосновении
Carles Alcolea

echo "node_modules/" > .gitignoreдолжен создать новый файл с оригинальным содержимым, используя >> добавление текста в конец существующего указанного файла
chrisz

28

Попробуйте сделать что-то вроде этого

**/node_modules

** используется для рекурсивного вызова во всем проекте

Две последовательные звездочки **в шаблонах, сопоставленные с полным путем, могут иметь особое значение:

Ведущий, **за которым следует косая черта, означает совпадение во всех каталогах. Например, **/fooсоответствует файлу или каталогу в fooлюбом месте, так же, как шаблон foo. **/foo/barсоответствует файлу или каталогу в barлюбом месте, которое находится непосредственно в каталоге foo.

Трейлинг /**соответствует всему внутри. Например, abc/**сопоставляет все файлы в каталоге abcотносительно расположения файла .gitignore с бесконечной глубиной.

Косая черта, за которой следуют две последовательные звездочки, затем косая черта соответствует нулю или нескольким каталогам. Например, a/\**/bматчи a/b, a/x/b, a/x/y/bи так далее.

Другие последовательные звездочки считаются недействительными.

Ссылка


2
Это правильный ответ.
король

Хотите объяснить, почему этот подход лучше, чем просто node_modules/?
Танком

22

Прежде всего, это добавить .gitignoreфайл в мое приложение. Как и на рисунке ниже.

Поместите .gitignore в родительскую папку / директорию node_modules.

и затем добавьте это в свой .gitignoreфайл

/node_modules

Запись

Вы также можете добавить другие файлы, чтобы игнорировать их, чтобы они были отправлены на github. Вот еще несколько файлов, хранящихся в .gitignore. Вы можете добавить их по вашему требованию. #это просто способ комментировать в файле .gitignore.

# See https://help.github.com/ignore-files/ for more about ignoring files.

# dependencies
/node_modules

# testing
/coverage

# production
/build

# misc
.DS_Store
.env.local
.env.development.local
.env.test.local
.env.production.local

npm-debug.log*
yarn-debug.log*
yarn-error.log*

Зачем вам добавлять сборку в .gitignore?
Себастьян Нильсен

6
@SebastianNielsen По той же причине, по которой мы не отслеживаем node_modules. Вы получаете сборку / компиляцией.
Даниэль Фост

8

Создать файл .gitignore в корневой папке напрямую редактором кода или командой

Для Mac и Linux

 коснуться .gitignore 

Для Windows

 эхо .gitignore 

открыть .gitignore объявить папку или имя файла, как это / foldername


4

Добавление строки ниже в .gitignore приведет к игнорированию узловых модулей из всего хранилища.

node_modules

введите описание изображения здесь


1
Как? Он будет игнорировать только папку node_modules в той же папке, где находится файл .gitignore
Раджендран Надар

@ RajendranNadar спасибо, я просто пытался понять это сам.
Джек БеНимбл

0

Добавьте строку ниже к вашему .gitignore

*/node_modules/*

Это будет игнорировать все node_modules в вашем текущем каталоге, а также в подкаталоге.


Обратите внимание, что на этот вопрос уже принят ответ. Пожалуйста, измените свой ответ, чтобы убедиться, что он улучшает другие ответы, уже присутствующие в этом вопросе.
hongsy

0

Вы можете сделать это с помощью SVN / Tortoise git.

просто щелкните правой кнопкой мыши по node_modules -> Tortoise git -> add to ignore list.

Это сгенерирует .gitIgnore для вас, и вы больше не найдете папку node_modules при постановке.


0
**node_modules

Это работает для меня

рекурсивный подход для игнорирования всех узлов node_modules, присутствующих в подпапках

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.