Ваша задача имеет простое решение, так как в гите появилась поддержка работы с моно-репозиториями.
Моно-репозиторий — это репозиторий, который содержит исходный код и ресурсы для нескольких проектов в одной общей структуре. Обычно разработчикам требуется не весь репозиторий целиком, а только отдельный каталог, относящийся к конкретному подпроекту. Однако Git по умолчанию скачивает весь репозиторий, включая ненужные файлы и каталоги.
Git теперь поддерживает так называемое выборочное скачивание содержимого через механизм sparse-checkout. Это позволяет вам работать только с нужными файлами или каталогами, исключая остальные, такие как node_modules.
# Клонировать репозиторий с фильтром, чтобы не загружать все файлы сразу
git clone --filter=blob:none --sparse https://example.com/repo.git
cd repo
# Инициализировать выборочную загрузку
git sparse-checkout init --no-cone
Нужно отредактировать файл
.git/info/sparse-checkout
:
# включить все файлы
/*
# кроме одной папки
!/node_modules/
Применить настройки
# Докачать всё, кроме папки node_modules
git sparse-checkout reapply
После выполнения этих команд Git скачает весь репозиторий, исключая указанный каталог
node_modules
. Вы сможете работать с репозиторием, не загружая лишние данные. Если потребуется вернуть
node_modules
, достаточно удалить соответствующее правило из файла
sparse-checkout
и снова выполнить
git sparse-checkout reapply