Git clone: клонировать конкретную ветку, тег или без истории
Чтобы клонировать конкретную ветку, выполните git clone -b имя-ветки --single-branch адрес. Чтобы скачать репозиторий быстрее, добавьте --depth 1: git возьмёт только последний коммит без остальной истории.
Клонировать одну ветку
git clone -b develop --single-branch https://github.com/user/repo.gitФлаг -b выбирает ветку, с которой начнётся работа. Флаг --single-branch запрещает скачивать остальные ветки. Без него git скачает все ветки, но переключится на выбранную.
Клонировать в нужную папку
git clone -b develop https://github.com/user/repo.git my-projectПоследний аргумент задаёт имя папки. Без него git берёт имя репозитория.
Клонировать тег
git clone -b v1.4.0 --depth 1 https://github.com/user/repo.gitФлаг -b принимает и имена тегов. После такого клонирования вы окажетесь в состоянии «detached HEAD»: это нормально, тег не ветка. Чтобы работать дальше, создайте ветку: git switch -c my-fix.
Клонировать без истории
Вариант | Что скачивается |
|---|---|
| Только последний коммит, без остальной истории |
| Последние 50 коммитов |
| Вся история, но содержимое файлов подгружается по мере необходимости |
| Репозиторий без рабочих файлов, только папка |
git clone --depth 1 https://github.com/user/repo.git
git clone --filter=blob:none https://github.com/user/repo.gitКак докачать остальное позже
git fetch --unshallow # превратить неполный клон в полный
git remote set-branches origin '*' # разрешить скачивать все ветки
git fetch origin # скачать ихЧастые вопросы
Как проверить, что клон неполный?
Выполните git rev-parse --is-shallow-repository: ответ true означает, что история обрезана.
Можно ли делать push из клона с --depth 1?
Да, отправка работает. Но для некоторых операций, например поиска общего предка, истории может не хватить: тогда используйте git fetch --unshallow.