Перейти к содержимому

git clone

Описание

Команда git clone создаёт клон/копию существующего репозитория в новом каталоге. Она также используется для создания удалённых отслеживающих веток для каждой ветки в клонируемом репозитории. Это самая распространённая команда, которая позволяет пользователям получить рабочую копию существующего центрального репозитория.

Gitclone

Использование git clone

Прежде всего, команда git clone используется для указания существующего репозитория и его клонирования или копирования в новый каталог. Локальную копию, хранящуюся на сервере и доступную по адресу example.com, можно получить с помощью SSH-имени пользователя x_person, вот так:

git clone <repo>

bash
git clone ssh://[email protected]/path/to/team-project.git
cd team-project
# You must work on this project

git clone инициализирует новый репозиторий Git в папке team-project на вашем локальном компьютере и заполняет её содержимым центрального репозитория. После этого вы можете перейти в проект с помощью cd, начать изменять файлы, фиксировать снимки и взаимодействовать с другими репозиториями.

Клонирование в определённую папку

Вы должны создать клон репозитория <repo> в папке <directory> на локальном компьютере.

git clone <repo> <directory>

bash
git clone <repo> <directory>

Клонирование определённого тега

Склонируйте репозиторий <repo> и клонируйте только ссылку для <tag>.

git clone --branch <tag> <repo>

bash
git clone --branch <tag> <repo>

Разница между git init и git clone

git init и git clone часто путают друг с другом. Здесь важно отметить, что git init создаёт новый пустой локальный репозиторий, тогда как git clone копирует существующий удалённый репозиторий на ваш локальный компьютер. git clone не требует предварительного запуска git init; он автоматически инициализирует локальный репозиторий и настраивает удалённые отслеживающие ветки.

Параметры конфигурации Git Clone

Параметры конфигурации — это инструменты, которые нужны, чтобы Git работал так, как лучше всего подходит вам или вашей команде. Ниже представлены самые распространённые из них:

  1. git clone --branch <repo>

    Аргумент --branch указывает ветку, которую следует клонировать вместо той, на которую указывает удалённый HEAD, обычно это ветка master. Кроме того, вместо ветки можно передать тег, чтобы получить тот же результат. Используя пример ниже, вы получите клон ветки new_feature из удалённого репозитория:

git clone --branch <repo>

bash
git clone --branch new_feature git://remoterepository.git
  1. git clone --bare <repo>

    При передаче аргумента --bare в git clone будет создана копия удалённого репозитория без рабочего каталога. Таким образом, репозиторий будет создан с историей проекта, в который можно выполнять push и из которого можно выполнять pull, но который нельзя редактировать.

  2. git clone --mirror <repo>

    Поведение аргумента --bare наследуется --mirror, что означает, что при передаче аргумента --mirror также будет применён --bare. Аргумент --mirror клонирует все расширенные ссылки удалённого репозитория. Он также позволит вам поддерживать конфигурацию отслеживания удалённой ветки.

Git URL

У Git есть собственный синтаксис URL. Он используется для передачи расположений удалённых репозиториев командам Git. URL Git важны, потому что git clone в основном используется для удалённых репозиториев.

Протоколы Git URL

Git может использовать следующие протоколы для передачи данных: Git, Secure Shell (SSH), HTTPS и Local. Следует отметить, что все эти протоколы требуют, чтобы Git был установлен и работал на сервере, кроме HTTPS.

  1. Git

    Протокол Git уникален для Git. Это специальный демон, работающий на порту 9418 и предоставляющий сервис, похожий на SSH, но без какой-либо аутентификации.

git clone git:// <repo>

bash
git://host.xz[:port]/path/to/repo.git/

Преимущество протокола Git — быстрая передача. У протокола Git есть и некоторые недостатки: отсутствие аутентификации и сложность настройки протокола.

  1. SSH

    Secure Shell (SSH) — это сетевой протокол, который помогает безопасно входить с одного компьютера на другой. В большинстве случаев доступ по SSH к серверам настроен по умолчанию. Перед подключением необходимо установить учётные данные с сервером хостинга.

git clone ssh:// <repo>

bash
git clone ssh://user@server/project.git

SSH — это единственный сетевой протокол, с помощью которого можно легко читать из репозиториев и записывать в них. У SSH есть много других преимуществ, таких как простая настройка, безопасный доступ (все данные передаются в зашифрованном и аутентифицированном виде) и компактность данных перед передачей. Недостаток SSH в том, что он не поддерживает анонимный доступ к репозиторию Git. Более подробную информацию о ключах SSH вы можете найти в разделе SSH key.

  1. HTTPS

    HTTPS расшифровывается как HyperText Transfer Protocol Secure. Этот протокол в основном используется для передачи HTML-данных через Интернет. Git настроен на обмен информацией через HTTPS.

git clone https:// <repo>

bash
git clone https://example.com/gitproject.git

Одно из преимуществ HTTPS — простота настройки. Кроме того, он не требует больших ресурсов на сервере. Он шифрует передачу содержимого. Корпоративные межсетевые экраны настроены так, чтобы пропускать трафик через этот порт, что делает HTTPS одним из часто используемых протоколов.

Основной недостаток — немного более высокая нагрузка из-за шифрования, что может сделать клонирование или получение данных из репозитория немного медленнее по сравнению с протоколом Git.

  1. Local

    Local — это базовый протокол, в котором удалённый репозиторий находится в другом каталоге на диске. Он используется, когда у всех участников команды есть доступ к общей файловой системе. Общая файловая система позволяет клонировать локальный репозиторий, отправлять в него изменения и получать из него изменения. Путь к репозиторию можно использовать как URL для клонирования репозитория в существующий проект, например так.

git clone <local_path>

bash
git clone /opt/git/project.git

Практика

Какова основная цель команды 'git clone' в Git?

Считаете ли это полезным?

Предпросмотр dual-run — сравните с маршрутами Symfony на продакшене.