git clone
В этой статье подробно рассматривается команда git clone
. git clone
— это утилита командной строки Git для выбора существующего репозитория и создания его клона, т. е. копии. На этой странице описаны варианты расширенной конфигурации и распространенные примеры использования команды git clone
. Будут рассмотрены следующие вопросы:
- Клонирование локального или удаленного репозитория.
- Клонирование чистого репозитория.
- Поверхностное клонирование — частичное клонирование репозиториев.
- Синтаксис URL-адресов и поддерживаемые протоколы Git.
В руководстве по настройке репозитория мы рассмотрели пример классического использования команды git clone
. На этой странице приводятся более сложные сценарии клонирования и конфигурации.
Назначение: создание копии проекта для совместной работы в разных репозиториях
Если проект уже был настроен в центральном репозитории, для создания его копии чаще всего используется команда git clone
. Клонирование, как и команда git init
, обычно выполняется один раз. После того как разработчик получил рабочую копию, все операции контроля версий и совместная работа осуществляются уже из локального репозитория.
Совместная работа в разных репозиториях
Важно понимать, что рабочая копия в Git существенно отличается от рабочей копии, получаемой при загрузке исходного кода из репозитория SVN. В отличие от SVN, в Git нет разницы между рабочими копиями и центральным репозиторием — все они являются полноценными репозиториями Git.
Поэтому совместная работа в Git принципиально отличается от совместной работы в SVN. В SVN работа строится на отношении между центральным репозиторием и рабочей копией, а модель совместной работы в Git основана на взаимодействии между репозиториями. Вместо загрузки рабочей копии в центральный репозиторий SVN в Git вы отправляете коммиты из одного репозитория в другой с помощью команды push или копируете их в обратном направлении с помощью команды pull.

Связанные материалы
git branch

СМ. РЕШЕНИЕ
Изучите Git с помощью Bitbucket Cloud
Вы легко можете задавать особую роль определенным репозиториям Git. Например, обозначив один из репозиториев Git как «центральный», вы можете воспроизвести централизованный рабочий процесс с использованием Git. Однако такой подход требует договоренностей, поскольку он не встроен в саму систему контроля версий
Использование
Чаще всего с помощью команды git clone
выбирается существующий репозиторий и создается его клон или копия. Это делается в новом каталоге и в другом месте. Исходный репозиторий может находиться в локальной файловой системе или на удаленном устройстве, к которому можно получить доступ с помощью поддерживаемых протоколов. Команда git clone
копирует существующий репозиторий Git. Она похожа на команду SVN checkout, но имеет некоторые отличия: так, полученная «рабочая копия» представляет собой полноценный репозиторий Git с собственной историей и файлами, полностью обособленный от исходного репозитория.
Для удобства в процессе клонирования автоматически создается удаленный доступ к исходному репозиторию (такое соединение называется origin). Это упрощает взаимодействие с центральным репозиторием. Автоматическое соединение обеспечивается за счет создания ссылок Git на концы удаленных веток в каталоге refs/remotes/origin
, а также инициализации переменных конфигурации remote.origin.url
и remote.origin.fetch
.
Применение команды git clone
демонстрируется на примере в руководстве по настройке репозитория. Ниже показано, как можно получить локальную копию центрального репозитория. Он расположен на сервере по адресу example.com
, к которому можно подключиться по протоколу SSH, используя имя пользователя john:
git clone ssh://john@example.com/path/to/my-project.git
cd my-project
# Start working on the project
Первая команда инициализирует новый репозиторий Git в каталоге my-project
на локальной машине и наполняет его содержимым центрального репозитория. Теперь вы можете перейти в проект и приступить к редактированию файлов, созданию снимков состояния и взаимодействию с другими репозиториями. Обратите внимание, что расширение .git
у клонированного репозитория отсутствует. Это означает, что у локальной копии есть рабочий каталог.
Клонирование в конкретную папку
git clone <repo> <directory>
Клонирование репозитория из
в директорию ~
на локальной машине.
Клонирование конкретного тега
git clone --branch <tag> <repo>
Клонирование репозитория из
и клонирование только ссылки на
.
Поверхностное клонирование
git clone -depth=1 <repo>
Эта команда клонирует репозиторий, расположенный в
, при этом количество коммитов в копируемой истории определяется опцией depth=1. В примере создается клон
, и в него включается только последний коммит. Поверхностное клонирование особенно эффективно, когда вы работаете с репозиториями с объемной историей коммитов. Объемная история коммитов может привести к появлению проблем с масштабированием в виде ограничений на использование дискового пространства и чрезмерной продолжительности операции клонирования. Поверхностное клонирование помогает устранить эти проблемы.
Варианты конфигурации
git clone -branch
Аргумент -branch
позволяет выбрать ветку для клонирования. В противном случае будет клонирована ветка, на которую указывает HEAD
в удаленном репозитории (обычно это главная ветка). Кроме того, для этих целей в команде можно задать тег вместо ветки.
git clone --branch
Сравнение команд git clone -mirror и git clone -bare
git clone --bare
Как и git init --bare,
аргумент -bare
при назначении команде git clone
приводит к созданию копии удаленного репозитория без рабочего каталога. Это означает, что репозиторий будет содержать историю проекта, к которой можно выполнять запросы push и pull, но которую нельзя редактировать напрямую. Кроме того, в репозитории, клонированном с опцией -bare
, не будут настроены удаленные ветки. Как и git init --bare
, эта команда создает удаленный репозиторий, который разработчики не смогут редактировать напрямую.
git clone --mirror
Вместе с аргументом --mirror
команде неявно назначается и аргумент --bare
. Поэтому можно сказать, что опция --mirror
наследует поведение --bare
, создавая чистый репозиторий без изменяемых рабочих файлов. Кроме того, --mirror
клонирует ссылки удаленного репозитория и сохраняет конфигурацию отслеживания удаленных веток. Затем вы можете выполнить команду git remote update
на созданном зеркале, в результате чего будут перезаписаны все ссылки из исходного репозитория. Так вы получите идентичные функциональные возможности для работы.
Другие варианты конфигурации
Исчерпывающий список опций git clone приведен в официальной документации по Git. В этом документе будут рассмотрены в том числе и другие распространенные опции.
git clone --template
git clone --template=<template_directory> <repo location>
Команда клонирует репозиторий, расположенный в В Git используется особый синтаксис URL-адресов, с помощью которого в команде можно задать расположение удаленных репозиториев. Поскольку команда Secure Shell (SSH) — это популярный сетевой протокол, обеспечивающий защищенную аутентификацию. Большинство серверов настроены для работы с ним по умолчанию. Из-за специфики протокола для входа на центральный сервер вам нужно знать учетные данные. Уникальный протокол Git. Вместе с Git поставляется специальный демон, который использует отдельный порт (9418). Этот протокол похож на SSH, однако GIT НЕ ОБЛАДАЕТ средствами аутентификации. Протокол для передачи гипертекста. Этот протокол повсеместно используется во Всемирной паутине. Чаще всего применяется для передачи данных веб-страниц в формате HTML через Интернет. Git можно настроить для работы по HTTP. В этом документе мы подробно изучили команду 2. Целевой репозиторий может находиться в локальной системе или на удаленном устройстве. 3. Git поддерживает несколько сетевых протоколов для установки соединения с удаленными репозиториями. 4. Существует множество вариантов конфигурации команды, которые позволяют изменять содержимое копии. Подробные сведения о возможностях Добавьте эти ресурсы в закладки, чтобы изучить типы команд DevOps или получать регулярные обновления по DevOps в Atlassian.
, и применяет шаблон из каталога к созданной локальной ветке. Подробные сведения о шаблонах Git см. на странице команды git init.
URL-адреса в Git
git clone
чаще всего используется в работе с удаленными репозиториями, здесь будет рассмотрен синтаксис URL-адресов в Git. URL-протоколы в Git
'- SSH
ssh://[user@]host.xz[:port]/path/to/repo.git/
'- GIT
git://host.xz[:port]/path/to/repo.git/
'- HTTP
http[s]://host.xz[:port]/path/to/repo.git/
Резюме
git clone
. Ниже перечислены основные моменты:
1. Команда git clone
предназначена для создания копии целевого репозитория.git clone
см. в официальной документации по Git. Примеры использования команды git clone на практике также можно найти в нашем руководстве по настройке репозитория.
Поделитесь этой статьей
Следующая тема
Рекомендуемые статьи
Блог Bitbucket
Образовательные программы DevOps
Как инструмент Bitbucket Cloud работает с Atlassian Open DevOps
Подпишитесь на информационную рассылку по DevOps