Для создания Git-репозитория существуют два основных подхода. Первый подход — импорт в Git уже существующего проекта или каталога. Второй — клонирование уже существующего репозитория с сервера.
Если вы собираетесь начать использовать Git для существующего проекта, то вам необходимо перейти в проектный каталог и в командной строке ввести
$ git init
Эта команда создаёт в текущем каталоге новый подкаталог с именем .git
содержащий все необходимые файлы репозитория — основу Git-репозитория.
На этом этапе ваш проект ещё не находится под версионным контролем. (В
главе 9 приведено подробное описание файлов содержащихся в только что
созданном вами каталоге .git
)
Если вы хотите добавить под версионный контроль существующие файлы (в
отличие от пустого каталога), вам стоит проиндексировать эти файлы и
осуществить первую фиксацию изменений. Осуществить это вы можете с
помощью нескольких команд git add
указывающих индексируемые файлы, а затем commit
:
$ git add *.c
$ git add README
$ git commit -m 'initial project version'
Мы разберём, что делают эти команды чуть позже. На данном этапе, у вас есть Git-репозиторий с добавленными файлами и начальным коммитом.
Если вы желаете получить копию существующего репозитория Git,
например, проекта, в котором вы хотите поучаствовать, то вам нужна
команда git clone
. Если вы знакомы с другими системами контроля версий, такими как Subversion, то заметите, что команда называется clone
, а не checkout
.
Это важное отличие — Git получает копию практически всех данных, что
есть на сервере. Каждая версия каждого файла из истории проекта
забирается (pulled) с сервера, когда вы выполняете git clone
.
Фактически, если серверный диск выйдет из строя, вы можете использовать
любой из клонов на любом из клиентов, для того чтобы вернуть сервер в
то состояние, в котором он находился в момент клонирования (вы можете
потерять часть серверных перехватчиков (server-side hooks) и т.п., но
все данные, помещённые под версионный контроль, будут сохранены,
подробнее см. в главе 4).
Клонирование репозитория осуществляется командой git clone [url]
. Например, если вы хотите клонировать библиотеку Ruby Git, известную как Grit, вы можете сделать это следующим образом:
$ git clone git://github.com/schacon/grit.git
Эта команда создаёт каталог с именем grit
, инициализирует в нём каталог .git
,
скачивает все данные для этого репозитория и создаёт (checks out)
рабочую копию последней версии. Если вы зайдёте в новый каталог grit
,
вы увидите в нём проектные файлы, пригодные для работы и использования.
Если вы хотите клонировать репозиторий в каталог, отличный от grit
, можно это указать в следующем параметре командной строки:
$ git clone git://github.com/schacon/grit.git mygrit
Эта команда делает всё то же самое, что и предыдущая, только результирующий каталог будет назван mygrit.
В Git'е реализовано несколько транспортных протоколов, которые вы
можете использовать. В предыдущем примере использовался протокол git://
, вы также можете встретить http(s)://
или user@server:/path.git
,
использующий протокол передачи SSH. В главе 4 мы познакомимся со всеми
доступными вариантами конфигурации сервера для обеспечения доступа к
вашему Git-репозиторию, а также рассмотрим их достоинства и недостатки.