Клонирование только определенной директории
Подскажите, как-то можно в git клонировать не весь проект ветки master, а только 1 директорию из этой ветки? И в дальнейшем работать с ней?
Подскажите, как-то можно в git клонировать не весь проект ветки master, а только 1 директорию из этой ветки? И в дальнейшем работать с ней?
Насколько я знаю, скачивать придётся всё равно весь master. Но можно чтобы "распаковывались" не все файлы.
git init имяреп
cd имяреп
git remote add origin ссылка
git fetch
На этом этапе master (и все другие ветви) будут скачаны, но не распакованы.
Теперь включим спецрежим:
git config core.sparseCheckout true
Укажем какие файлы мы хотим
echo вот/этот/каталог >> .git/info/sparse-checkout
И распакуем файлы:
git checkout origin/master -B master
В итоге вот/этот/каталог/файл.txt
попадёт в рабочий каталог, а не/тот/каталог/файл.txt
нет.
Если в репозитории много ветвей и нужно экономить траффик, можно скачивать не все (например, после git remote add
изменить файл .git/config
, чтобы было не fetch = +refs/heads/*:refs/remotes/origin/*
, а только fetch = +refs/heads/master:refs/remotes/origin/master
), а также скачивать не всю историю (git fetch --depth=50
).