git clone
Узнайте о команде git clone, её использовании, основных параметрах конфигурации и форматах Git URL.
Что делает git clone
Команда git clone копирует существующий репозиторий в новый каталог на вашем компьютере. За один шаг она:
- Создаёт целевой каталог и инициализирует в нём новый локальный репозиторий (запускать git init предварительно не нужно).
- Загружает полную историю проекта — каждый коммит, ветку и тег.
- Добавляет исходный репозиторий как удалённый с именем
origin. - Создаёт ветку отслеживания для каждой ветки на удалённом репозитории и переключается на ветку по умолчанию (обычно
mainилиmaster) в вашем рабочем каталоге.
Именно так почти каждый разработчик получает рабочую копию общего проекта, поэтому git clone обычно является самой первой командой Git, которую вы запускаете в новом проекте.

Базовое использование
Общая форма команды принимает URL репозитория и, опционально, имя каталога:
git clone <repo> [<directory>]Например, клонирование проекта по SSH с сервера, доступного по адресу example.com, с именем пользователя x_person:
git clone ssh://[email protected]/path/to/team-project.git
cd team-project
# Start editing files, committing snapshots, and pushing to the remoteЭто инициализирует новый репозиторий в папке team-project и заполняет его содержимым центрального репозитория. После клонирования вы можете перейти в каталог проекта командой cd и начать изменять файлы, фиксировать снимки состояния и взаимодействовать с удалённым репозиторием.
Клонирование в указанную папку
По умолчанию Git называет новый каталог по имени репозитория. Чтобы клонировать в папку по вашему выбору, добавьте аргумент <directory>:
git clone https://example.com/team-project.git my-project
cd my-projectЭто клонирует репозиторий в my-project вместо team-project.
Клонирование отдельной ветки или тега
Передайте --branch (сокращённо: -b) с именем ветки или тегом, чтобы переключиться на что-то отличное от ветки по умолчанию удалённого репозитория:
# Check out the develop branch instead of the default
git clone --branch develop https://example.com/team-project.git
# Check out the state at tag v1.0 (results in a detached HEAD)
git clone --branch v1.0 https://example.com/team-project.gitКогда вы передаёте тег, рабочее дерево переключается на этот тег в состоянии detached HEAD, поскольку тег — это не ветка, в которую можно делать коммиты.
Полезные параметры clone
Эти параметры позволяют настроить, что именно git clone загружает и как ведёт себя новый репозиторий.
--depth (поверхностное клонирование)
--depth <n> создаёт поверхностный клон, который сохраняет только последние <n> коммитов вместо полной истории. Это значительно быстрее для больших репозиториев и широко используется в CI-конвейерах, где полная история не нужна.
git clone --depth 1 https://example.com/team-project.git--single-branch
--single-branch загружает историю только одной ветки (ветки по умолчанию или той, что указана в --branch), а не всех веток. Этот параметр подразумевается при использовании --depth.
git clone --single-branch --branch main https://example.com/team-project.git--recurse-submodules
Если проект использует подмодули, параметр --recurse-submodules клонирует и инициализирует их за один шаг, и вам не нужно запускать git submodule update --init после этого.
git clone --recurse-submodules https://example.com/team-project.git-o (переименование удалённого репозитория)
По умолчанию источник добавляется как удалённый репозиторий origin. Используйте -o <name>, чтобы выбрать другое имя. Смотрите git remote для управления удалёнными репозиториями после клонирования.
git clone -o upstream https://example.com/team-project.git--bare и --mirror
--bareсоздаёт копию репозитория без рабочего каталога. Полученный репозиторий содержит историю проекта, в него можно выполнять push и pull, но в нём нет переключённых файлов для редактирования. Это формат, используемый для репозиториев на серверах.--mirrorподразумевает--bare, но идёт дальше: он копирует все ссылки (ветки, теги, заметки, ссылки на удалённые ветки) и настраивает удалённый репозиторий так, чтобы зеркало оставалось точным отражением источника. Используется в основном для перемещения или резервного копирования репозитория.
git clone --bare https://example.com/team-project.git
git clone --mirror https://example.com/team-project.gitРазница между git init и git clone
git init и git clone часто путают. Ключевое различие:
git initсоздаёт совершенно новый пустой локальный репозиторий — без удалённого репозитория и без истории.git cloneкопирует существующий удалённый репозиторий на ваш компьютер, вместе со всей историей и автоматически настраиваетorigin.
git clone не требует предварительного запуска git init — он сам инициализирует локальный репозиторий и настраивает ветки отслеживания.
Git URL
У Git есть собственный синтаксис URL для указания командам адреса удалённого репозитория. Поскольку git clone почти всегда обращается к удалённому репозиторию, важно понимать эти URL. Git поддерживает четыре семейства протоколов: Git, SSH, HTTPS и Local. Все они, кроме HTTPS, требуют наличия установленного и работающего Git на сервере.
Протокол Git
Протокол Git уникален для Git. Он обслуживается демоном, который слушает порт 9418 и предоставляет анонимный, преимущественно читаемый доступ, похожий на SSH, но без какой-либо аутентификации.
git clone git://host.xz/path/to/repo.gitЕго преимущество — быстрая передача данных. Недостатки — отсутствие аутентификации (поэтому он редко используется для записи) и более сложная настройка сервера.
Протокол SSH
Secure Shell (SSH) — это сетевой протокол для безопасного входа с одного компьютера на другой. Это наиболее распространённый протокол для аутентифицированного доступа на чтение/запись, и SSH-доступ настроен по умолчанию на большинстве хостинговых платформ. Перед подключением необходимо настроить учётные данные (SSH-ключ) на сервере.
git clone ssh://user@server/project.git
# Many hosts also accept the shorter "scp-like" form:
git clone user@server:project.gitSSH шифрует и аутентифицирует весь трафик, сжимает данные перед передачей и легко настраивается. Его главное ограничение — отсутствие поддержки анонимного доступа. Смотрите наш раздел SSH key для настройки ключей.
Протокол HTTPS
HTTPS (HyperText Transfer Protocol Secure) — это протокол для безопасной передачи данных в интернете, и Git может использовать его для обмена репозиториями.
git clone https://example.com/gitproject.gitHTTPS прост в настройке, шифрует передачу данных и легко проходит через корпоративные межсетевые экраны (порт 443 практически всегда открыт), что делает его одним из наиболее широко используемых протоколов. Его главный недостаток — немного более высокие накладные расходы на шифрование, что может сделать клонирование незначительно медленнее по сравнению с чистым протоколом Git.
Локальный протокол
При использовании локального протокола «удалённый» репозиторий — это просто другой каталог на том же диске или в общей файловой системе. Когда члены команды совместно используют файловую систему, они могут клонировать, выполнять push и pull через обычные пути.
git clone /opt/git/project.git
# Or with an explicit file:// URL:
git clone file:///opt/git/project.gitСвязанные команды
После клонирования следующие главы охватывают повседневный рабочий процесс:
- git fetch и git pull — загрузка и интеграция обновлений из удалённого репозитория.
- git branch и git checkout — создание веток и переключение между ними.
- git remote — просмотр и управление удалённым репозиторием
origin, который настроилgit clone.