Чтобы добавить один каталог в существующий разреженный чекаут (sparse checkout) на Mac, откройте Терминал, перейдите в корень репозитория и выполните git sparse-checkout add 'path/to/directory'. Git сделает отслеживаемые файлы в этом каталоге доступными в рабочем дереве, сохранив при этом остальные выбранные для sparse-checkout пути. Если в репозитории еще не включен разреженный чекаут, используйте команду git sparse-checkout set --cone 'path/to/directory', чтобы включить режим конуса (cone mode) и выбрать каталог; эта команда задает выборку заново, поэтому она может удалить другие отслеживаемые файлы из рабочего дерева.
Перед выполнением команды
Sparse checkout определяет, какие именно отслеживаемые файлы будут отображаться в рабочем дереве репозитория. Файлы вне выбранной области остаются под контролем Git; они не удаляются из истории репозитория. В стандартном режиме конуса (cone mode) Git включает все элементы в выбранном каталоге, а также файлы, находящиеся непосредственно в родительских каталогах и корне репозитория. Это означает, что добавление вложенного каталога может также сделать видимыми соседние файлы на верхнем или родительском уровнях. Справочное руководство по git sparse-checkout
Откройте Терминал и убедитесь, что Git доступен, затем перейдите в репозиторий. Например, замените пример пути на расположение вашей рабочей копии:
git --version
cd "$HOME/Projects/sample-repo"
git status --short
На Mac без установленных инструментов командной строки Git вызов git может предложить установить Command Line Tools от Apple. Следуйте подсказкам macOS, а затем снова выполните git --version. Apple: Установка Command Line Tools
Используйте git status --short, чтобы проверить наличие локальных изменений перед сменой шаблона sparse-checkout. Сохраните важные незакоммиченные или неотслеживаемые изменения, особенно если они находятся внутри каталога, который может быть исключен. Выполняйте команды sparse-checkout из репозитория и используйте пути относительно его корня. Заключайте пути, содержащие пробелы или спецсимволы оболочки, в кавычки, как показано в примерах, чтобы zsh или bash передавали путь в Git как единый аргумент.
Добавление каталога в существующий sparse checkout
Если sparse checkout уже включен, добавьте каталог с помощью команды:
git sparse-checkout add 'Packages/Map View'
Замените Packages/Map View на путь к каталогу в том виде, в котором он представлен в репозитории. В режиме конуса это добавляет данный каталог к текущему набору, а не заменяет другие ранее выбранные каталоги. В документации Git указано, что для add требуется уже существующий sparse checkout; эта команда обновляет список выбранных путей и рабочее дерево. Справочник по командам Git sparse-checkout
Чтобы просмотреть выбранные каталоги после этого, выполните:
git sparse-checkout list
git status --short
Список отобразит каталоги разреженного чекаута. Статус помогает увидеть, изменены ли отслеживаемые или неотслеживаемые файлы; он не показывает пропущенные отслеживаемые файлы как удаленные лишь потому, что они находятся вне области sparse-checkout.
Если это обычный чекаут
Для полного чекаута, который вы хотите преобразовать в sparse checkout с выбранным каталогом, используйте set:
git sparse-checkout set --cone 'Packages/Map View'
set формирует разреженную выборку на основе указанных вами путей. Она не сохраняет другие каталоги из обычного полного чекаута в качестве дополнительных выбранных путей. Если вам нужно несколько каталогов, укажите каждый из них в одной и той же команде, например git sparse-checkout set --cone 'Packages/Map View' 'Docs'. Справочник по командам Git sparse-checkout
Изменение набора путей может привести к удалению файлов из рабочего дерева. В документации Git также отмечается, что при изменении набора в cone-mode могут быть удалены игнорируемые файлы в каталогах, где больше нет отслеживаемых или неигнорируемых неотслеживаемых файлов. Проверьте статус и защитите все нужные локальные файлы перед выполнением set; если Git предупреждает, что неотслеживаемые файлы препятствуют очистке, проверьте эти файлы вместо принудительного удаления. Справочное руководство по git sparse-checkout
Если Git сообщает об ошибке
Если git sparse-checkout add сообщает, что репозиторий не находится в режиме sparse checkout, решите, намерены ли вы сузить рабочее дерево. Чтобы сделать это, используйте команду set --cone, описанную выше. Если вы планировали сохранить все текущие каталоги и лишь добавить один, сначала определите каталоги, которые хотите оставить, а затем передайте их все вместе с новым каталогом в set --cone.
Если путь не появился после его добавления, проверьте правильность написания и регистр символов в соответствии с отслеживаемыми путями репозитория, а также убедитесь, что он существует в текущей ветке. Sparse checkout выбирает отслеживаемые пути; он не создает отсутствующий каталог и не инициализирует подмодули автоматически. В документации Git инициализация подмодулей описана как отдельная операция. Справочное руководство по git sparse-checkout
Sparse checkout управляет тем, какие файлы Git помещает в рабочее дерево; это не то же самое, что клонирование только одного каталога или удаление остальных каталогов из репозитория. Git поддерживает отдельные фильтры частичного клонирования (partial clone) для ограничения объектов, загружаемых с сервера, но их доступность и эффект зависят от клона и настроек сервера. Параметр git clone --sparse начинает с файлов верхнего уровня и представляет собой отдельный рабочий процесс для создания нового клона. Документация по git clone