Материал предоставлен http://it.rfet.ru

Клонирование репозитория

Другой распространенный способ начала работы с Git — это клонирование существующего репозитория. При клонировании Вы получаете последнюю версию всех файлов и папок репозитория, плюс всю его историю. Таким образом, каждый клон — это полноценный Git-репозиторий.

Git позволяет клонировать как локальные, так и удаленные репозитории, с помощью команды git clone. Базовый синтаксис этой команды довольно прост: Вы указываете путь к репозиторию, а также, если необходимо, наименование папки, в которую будет помещен его клон.

Локальное клонирование

Вы можете клонировать репозитории на своей рабочей машине. Например, клонируем созданный нами ранее репозиторий my_first_repo:

cd ..
git clone my_first_repo/ my_first_clone

Вы должны получить следующее сообщение:

Cloning into my_first_clone...
done.
warning: You appear to have cloned an empty repository.

Предупреждение говорит Вам о том, что Вы еще не внесли ни одного изменения в клонируемый репозиторий. Другими словами, Вы только что клонировали пустой репозиторий.

По умолчанию Git не будет копировать объекты при локальном клонировании репозитория. Вместо этого он создаст жёсткие ссылки (hard links) в целях экономии места. Если Вы хотите сделать полноценную копию репозитория (например, в целях резервного копирования), используйте параметр --no-hardlinks:

git clone --no-hardlinks /path/to/repo destination_directory

Клонирование удаленных репозиториев

Для ведения совместной разработки как правило используют удалённое клонирование: разработчики получают локальные копии центрального репозитория, работают с ними и периодически синхронизируют свои изменения с центральным репозиторием.

Для примера создайте клон тренировочного репозитория (этот репозиторий специально подготовлен для занятий этого курса и размещен на GitHub):

cd ..
git clone git://github.com/inca/gitbook-sample

В результате выполнения получаем примерно следующее:

Cloning into gitbook-sample...
remote: Counting objects: 18, done.
remote: Compressing objects: 100% (16/16), done.
remote: Total 18 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (18/18), done.
Создание репозиторияХранение объектов