git sparse-checkout игнорировать определенный тип файла
У меня есть репозиторий git с кучей больших csv, которые я не хочу клонировать, поэтому я наткнулся на git sparse-checkout и это сообщение: https://github.blog/2020-01-17-bring -ваш-монорепозиторий-до-размера-с-разреженной-кассой /
Из этого поста я взял следующее:
git clone --no-checkout https://github.com/john_doe/repo-with-big-csv.git
cd repo-with-big-csv
git sparse-checkout init --cone
Затем я редактирую .git/info/sparse-checkout
и добавьте следующее (адаптировано из примера на странице выше):
/*
!**/*.csv
Но похоже, что это не работает должным образом. Послеgit pull
некоторые папки клонированы, некоторые нет. Я также заметил предупреждение, когда яgit sparse-checkout list
Я получил:
warning: unrecognized pattern: '**/*.csv'
warning: disabling cone pattern matching
/*
!**/*.csv
Как правильно игнорировать файлы определенного типа?
1 ответ
См. " Git sparse checkout с исключением" и обязательно используйте Git 2.26.x, в котором есть некоторые исправления для git sparse-checkout
команда.
В режиме конуса подкоманда git sparse-checkout set принимает список каталогов вместо списка шаблонов sparse-checkout.
Если
core.sparseCheckoutCone=true
, то Git проанализирует файл разреженной проверки, ожидая шаблонов этих типов. Git предупредит, если шаблоны не совпадают.
Вам нужно использовать только шаблоны ограничений на основе совпадений префиксов папок.
Frode Akselsen добавляет в комментариях:
мой пример действительно работает: папки, которые не отображаются, содержат только
.csv
файлов, следовательно, после применения правил в.git/info/sparse-checkout
, в папке больше ничего нет, поэтому Git не отображает папку.
Я подтверждаю, что Git будет показывать только содержимое: если в папке нет файла (нет "содержимого"), указанная папка не отображается.