Настройка репозитория

Настройка репозитория

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

 

В этом руководстве рассматриваются следующие темы:

  • инициализация нового репозитория Git;
  • клонирование существующего репозитория Git;
  • коммит измененной версии файла в репозиторий;
  • конфигурирование репозитория Git для удаленной совместной работы;
  • распространенные команды для управления версиями Git.

По окончании данного модуля вы сможете создавать репозитории Git, использовать основные команды Git, выполнять коммит измененных файлов, просматривать историю проекта и настраивать соединение с сервисом хостинга Git (Bitbucket).

Что такое репозиторий Git?

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

Инициализация нового репозитория: git init

Для создания нового репозитория используется команда git init. Команду git init выполняют только один раз для первоначальной настройки нового репозитория. Выполнение команды приведет к созданию нового подкаталога .git в вашем рабочем каталоге. Кроме того, будет создана новая главная ветка. 

Создание версии существующего проекта с использованием нового репозитория Git

В этом примере предполагается, что у вас уже есть папка проекта, в которой вы и хотите создать репозиторий. Выполните команду cd для перехода к папке проекта, а затем выполните команду git init.

cd /путь/до/вашего/существующего/каталога/с/кодом
git init

При указании существующего каталога проекта в команде git init описанная выше инициализация будет выполнена на уровне этого каталога проекта.

git init <каталог проекта>

Перейдите на страницу git init, чтобы получить подробные сведения о команде git init.

Клонирование существующего репозитория: git clone

Команда clone — наиболее распространенный способ создания локального клона проекта, если он уже был настроен в центральном репозитории. Клонирование, как и выполнение команды git init, обычно делается один раз. После того как разработчик получит рабочую копию, все операции контроля версий выполняются в локальном репозитории.

git clone <url-адрес репозитория>

Для создания копии (клонирования) удаленных репозиториев используется команда git clone. В качестве параметра в команду git clone передается URL-адрес репозитория. Git поддерживает несколько различных сетевых протоколов и соответствующих форматов URL-адресов. В этом примере используется SSH-протокол Git. URL-адреса SSH в Git имеют следующий шаблон: git@ИМЯ_ХОСТА:ИМЯ_ПОЛЬЗОВАТЕЛЯ/ИМЯ_РЕПОЗИТОРИЯ.git

Пример URL-адреса SSH в Git имеет вид: git@bitbucket.org:rhyolight/javascript-data-store.git, а ниже приведены значения шаблонных параметров:

  • ИМЯ_ХОСТА: bitbucket.org
  • ИМЯ_ПОЛЬЗОВАТЕЛЯ: rhyolight
  • ИМЯ_РЕПОЗИТОРИИЯ: javascript-data-store

После исполнения команды последние версии файлов из главной ветки удаленного репозитория будут загружены и помещены в новую папку. Имя новой папки будет соответствовать параметру ИМЯ_РЕПОЗИТОРИЯ, в данном случае это javascript-data-store. В папке будет вся история удаленного репозитория и только что созданная главная ветка.

Дополнительную информацию об использовании команды git clone и поддерживаемых форматах URL-адресов в Git см. на  странице git clone.

Сохранение изменений в репозитории: git add и git commit

Итак, у вас появился репозиторий, созданный путем клонирования или инициализации. Теперь вы можете делать коммиты изменений в версиях файлов. В следующем примере предполагается, что вы настроили проект в каталоге /path/to/project. В этом примере выполняются следующие действия.

  • Переход к каталогу /path/to/project.
  • Создание нового файла CommitTest.txt с текстом "test content for git tutorial".
  • Добавление файла CommitTest.txt с помощью команды git add в раздел проиндексированных файлов репозитория.
  • Создание нового коммита с комментарием, описывающим содержание коммита.
cd /path/to/project
echo "test content for git tutorial" >> CommitTest.txt
git add CommitTest.txt
git commit -m "added CommitTest.txt to the repo"

После выполнения этой команды файл CommitTest.txt добавится к истории репозитория, и репозиторий будет отслеживать последующие изменения в файле.

В этом примере представлены две новые команды Git: add и commit. Это очень упрощенный пример. Подробнее команды рассматриваются на страницах git add и git commit. Команду git add часто используют с параметром --all. Команда git add --all добавляет все измененные и неотслеживаемые файлы в репозиторий и обновляет рабочий каталог репозитория.

Совместная работа в разных репозиториях: git push

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

Поэтому совместная работа в Git принципиально отличается от совместной работы в SVN. В SVN работа строится на отношении между центральным репозиторием и рабочей копией, а модель совместной работы в Git основана на взаимодействии между репозиториями. Вместо загрузки рабочей копии в центральный репозиторий SVN, в Git вы отправляете коммиты из одного репозитория в другой или копируете их в обратном направлении.

При этом можно без труда назначить определенным репозиториям Git особую роль. Например, обозначив один из репозиториев Git как «центральный», можно воспроизвести централизованный процесс с использованием Git. Такой подход основан на договоренностях, а не встроен в саму систему контроля версий.

Сравнение чистых и клонированных репозиториев

Если в предыдущем разделе («Инициализация нового репозитория») для настройки локального репозитория вы использовали команду git clone, ваш репозиторий уже готов к удаленной совместной работе. Команда git clone автоматически настроит репозиторий, где значение remote будет соответствовать URL-адресу Git, из которого был клонирован репозиторий. Это означает, что после изменения файла и выполнения коммита вы можете сразу выполнить команду git push, чтобы отправить эти изменения в удаленный репозиторий.

Если вы использовали команду git init для создания репозитория с нуля, у вас не будет удаленного репозитория, в который можно помещать изменения. Обычно для инициализации нового репозитория пользователь переходит на сервис Git-хостинга (например, Bitbucket) и создает репозиторий там. Данный сервис предоставит URL-адрес Git, который затем можно добавить в локальный репозиторий Git. После этого можно выполнять команду git push в репозиторий на хостинге. После создания удаленного репозитория на выбранном хостинге вам понадобится обновить локальный репозиторий, выполнив привязку. Этот процесс описывается далее в руководстве по установке и настройке.

Если вы предпочитаете поддерживать собственный удаленный репозиторий, вам нужно создать «чистый репозиторий». Для этого команды git init и git clone принимают аргумент --bare. Наиболее популярная причина использования чистого репозитория — создание удаленного центрального репозитория Git.

Конфигурирование и настройка: git config

После настройки удаленного репозитория его URL-адрес нужно добавить в локальный файл git config, а также создать вышестоящую ветку для локальных веток. Такую возможность предоставляет команда git remote.

git remote add <имя_удаленного_репозитория> <url-адрес_удаленного_репозитория>

Эта команда привяжет удаленный репозиторий по адресу <url-адрес_удаленного_репозитория> к ссылке в вашем локальном репозитории под<именем_удаленного_репозитория>. После привязки удаленного репозитория в него можно будет отправлять локальные ветки с помощью команды push.

git push -u <имя_удаленного_репозитория> <имя_локальной_ветки>

Эта команда поместит ветку локального репозитория с названием <имя_локальной_ветки> в удаленный репозиторий <имя_удаленного_репозитория>.

Дополнительную информацию о команде git remote см. на странице по удаленной работе в Git.

Помимо конфигурирования URL-адреса удаленного репозитория, вам может потребоваться установить глобальные параметры Git, например имя пользователя или электронный адрес. Команда git config позволяет настроить установку Git (или отдельный репозиторий) из командной строки. С помощью этой команды можно установить любые настройки: от информации о пользователе до его предпочтений и характеристик репозитория. Ниже перечислены распространенные варианты конфигурации.

Git хранит варианты конфигурации в трех различных файлах, позволяющих ограничивать область видимости на уровне отдельных репозиториев (локальный), пользователя (глобальный) или всей системы (системный):

  • Локальный: <repo>/.git/config — настройки на уровне репозитория.
  • Глобальный: /.gitconfig — настройки на уровне пользователя. Здесь хранятся настройки с флагом --global.
  • Системный: $(prefix)/etc/gitconfig — настройки на уровне всей системы.

Укажите имя автора, которое будет использоваться для всех коммитов в текущем репозитории. Обычно для настройки параметров конфигурации для текущего пользователя используется флаг --global.

git config --global user.name <имя>

Эта команда задает имя автора, которое будет использоваться для всех коммитов, выполненных текущим пользователем.

Добавление параметра --local или выполнение команды без параметра уровня конфигурации приведет к установке значения user.name для текущего локального репозитория.

git config --local user.email <адрес_электронной_почты>

Эта команда задает адрес электронной почты автора, который будет использоваться для всех коммитов, выполненных текущим пользователем.

git config --global alias.<имя-псевдонима> <команда-git>

С помощью этой команды можно создать быстрые клавиши для команды Git. Это мощная возможность для создания собственных комбинаций клавиш для часто используемых команд Git. Ниже показан упрощенный пример:

git config --global alias.ci commit

Так создается команда ci, которую можно использовать как сокращение команды git commit. Подробнее о псевдонимах в Git см. на странице git config.

git config --system core.editor <редактор>

Эта команда задает текстовый редактор, используемый для таких команд, как git commit, для всех пользователей текущего компьютера. Аргумент <редактор> должен представлять собой команду, запускающую нужный редактор (например, vi). В этом примере представлен параметр --system. Параметр --system устанавливает настройку на уровне всей системы, включая всех пользователей и все репозитории на компьютере. Дополнительную информацию об уровнях конфигурации см. на странице git config.

git config --global --edit

Эта команда открывает файл глобальной конфигурации в текстовом редакторе для редактирования вручную. Подробное руководство по настройке текстового редактора для Git см. на странице git config.

Пояснения

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

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

  • <repo>/.git/config — настройки на уровне репозитория.
  • /.gitconfig — настройки на уровне пользователя. Здесь хранятся настройки с флагом --global.
  • $(prefix)/etc/gitconfig — настройки на уровне всей системы.

Если параметры, указанные в этих файлах, конфликтуют, локальные настройки переопределяют пользовательские настройки, которые в свою очередь переопределяют системные настройки. Если вы откроете один из этих файлов, вы увидите нечто подобное:

[user] name = John Smith email = john@example.com [alias] st = status co = checkout br = branch up = rebase ci = commit [core] editor = vim

Вы можете изменить эти значения вручную, эффект будет аналогичен использованию команды git config.

Пример

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

Представьтесь репозиторию Git с помощью команды git config.

git --global user.name "John Smith" git config --global user.email john@example.com

Выберите любимый текстовый редактор.

git config --global core.editor vim

Добавьте псевдонимы по типу SVN.

git config --global alias.st status
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.up rebase
git config --global alias.ci commit

Будет создан файл ~ /.gitconfig, описанный в предыдущем разделе. Подробную информацию о команде git config см. на странице git config.

Резюме

Мы показали, как создать репозиторий Git двумя способами: git init и git clone. Этим руководством можно пользоваться для управления исходным кодом ПО или другим контентом, при хранении которого требуется поддерживать версионность. Кроме того, были представлены команды git add, git commit, git push и git remote и показаны простые примеры их использования. 

Прочтите наше руководство о том, как подобрать оптимальную систему репозиториев кода для своей команды

Готовы изучить Git?

Попробуйте это интерактивное учебное руководство.

Начните прямо сейчас