Одним из многих преимуществ использования программного обеспечения для управления версиями, такого как Git, является то, насколько легко вы можете скопировать все содержимое и историю проекта с помощью простой команды в своем терминале. После того, как на локальном компьютере, вы можете внести изменения / дополнения / делеции , которые вы хотите, и нажмите его обратно происхождения репо.
В этой короткой статье мы увидим, как можно клонировать репозиторий Git из удаленного (или локального) источника.
Клонирование репозиториев
Чтобы клонировать удаленный репозиторий, вы захотите использовать
команду git clone
, которая обычно используется следующим образом:
$ git clone <repo-url>
Это клонирует репозиторий в ваш текущий рабочий каталог, используя имя
репо в качестве целевого каталога. Чтобы клонировать его в другой
каталог, вы можете указать его в качестве второго параметра для clone
:
$ git clone <repo-url> <directory>
Пример этой команды для общедоступного репозитория GitHub будет выглядеть следующим образом:
$ git clone [email protected] :scottwrobinson/twentyjs.git twentyjs-clone
Cloning into 'twentyjs-clone'...
remote: Enumerating objects: 48, done.
remote: Total 48 (delta 0), reused 0 (delta 0), pack-reused 48
Receiving objects: 100% (48/48), 9.35 KiB | 0 bytes/s, done.
Resolving deltas: 100% (22/22), done.
Как и все команды Git, здесь можно использовать довольно много флагов.
Ниже приведены некоторые из наиболее часто используемых для git clone
:
-l
или--local
который мы клонируем, находится на нашем локальном компьютере, что позволяет обойти обычный транспортный механизм, «осведомленный о git». Файлы в.git/objects/
также жестко связаны с исходным репо, что экономит место на диске. Этот флаг не нужен, если репо указан как локальный путь, но должен быть явно указан, если локальное репо указано как URL.--no-tags
: не загружать какие-либо теги репо. Этот параметр также сохраняется, поэтому последующиеgit pull
иgit fetch
не загружают теги.-o <name>
или--origin <name>
: переименовать удаленный репозиторий для этого клона с «origin» на то, что указано<name>
.-n
или--no-checkout
: не проверять HEAD после клонирования--bare
: помещает файлы из<directory>/.git
непосредственно в место, указанное<directory>
. Это хорошо, когда вам нужна копия репо, но вам не нужно работать прямо из нее в целях разработки.
Помните, я упомянул только наиболее часто используемые флаги,
относящиеся к команде clone
. Есть еще несколько, которые вы можете
проверить с помощью команды git help clone
в своем терминале.
Клонирование локальных репозиториев
Как вы, наверное, догадались по некоторым из упомянутых выше флагов, вы также можете клонировать репозитории, которые уже находятся на вашем локальном компьютере. Это делается путем указания пути к каталогу репо вместо URL-адреса. Вот пример того, как это будет выглядеть:
$ git clone /Users/scott/sandbox/twentyjs /Users/scott/projects/twentyjs
С помощью этой команды twentyjs
Git 20js будет скопирован в новый
каталог projects/twentyjs
Вы можете опустить путь назначения, но
имейте в виду, что вам либо нужно находиться в другом рабочем каталоге,
чем в том, где он находится, либо вам нужно дать ему другое имя, чтобы
избежать конфликтов.
Другие протоколы
Существует несколько способов указать, какой репозиторий вы хотите клонировать, независимо от того, клонируете ли вы локальное или удаленное репо. Различия заключаются в указанном вами протоколе, который также должен поддерживаться сервером, на котором размещено репо. При выборе протокола обязательно учитывайте требования безопасности и используйте наиболее безопасные протоколы, когда это необходимо или возможно.
Ниже приведены несколько примеров протоколов, которые изначально поддерживаются Git:
git://example.com[:port]/path/to/repo/project.git
ssh://[ [email protected] ]example.com[:port]/path/to/repo/project.git
http[s]://example.com[:port]/path/to/repo/project.git
ftp[s]://example.com[:port]/path/to/repo/project.git
( не рекомендуется из-за устаревания )
В зависимости от используемого протокола также поддерживаются другие формы URL, например, этот для SSH:
[email protected] :path/to/repo/project.git
Что касается локальных репозиториев, вы можете использовать одну из следующих форм:
/path/to/repo/project.git
file:///path/to/repo/project.git