Git remote: описание, порядок работы, репозиции

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

remote branches

Удаленный доступ и его особенности

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

Управление удаленным репозиторием в Git

Ниже рассмотрен процесс работы с удаленными хранилищами в Git. Обычно пользователям системы приходится делиться рядом коммитов, а не одним набором изменений. Вместо того, чтобы отправлять набор изменений из рабочей копии в центральный репозиторий, Git позволяет разработчикам обмениваться целыми ветвями между отдельными хранилищами. У каждого пользователя может быть несколько репозиториев, каждый из которых обычно доступен только для чтения или чтения и записи. Сотрудничество с другими людьми предполагает управление этими удаленными репозиториями. Именно для этого нужна команда для удаленного доступа — git remote. Она является одной из частей более широкой системы, отвечающей за синхронизацию изменений.

git remote branches

Особенности удаленного доступа

Записи, зарегистрированные при помощи команды удаленного доступа, используются в сочетании с командами git remote push, fetch и pull. Как git fetch, так и git pull можно использовать для чтения из удаленного репозитория. Команда git remote позволяет создавать, просматривать и удалять подключения к другим репозиториям. Например, push используется для того, чтобы поместить данные в хранилище, а pull, наоборот, чтобы получить. Команда fetch нужна, чтобы извлечь всю информацию, отсутствующую на локальной копии, из удаленного репозитория. После ее выполнения создаются ссылки на все новые ветки, в которых находятся недостающие данные. То есть обновления не сливаются с текущим проектом, а располагаются отдельно.

git remote

Впоследствии данные нужно будет сливать вручную, если возникнет такая необходимость. Для автоматического извлечения и соединения репозиториев используется git remote pull. Удаленные подключения больше напоминают закладки, чем прямые ссылки в другие репозитории. Вместо предоставления доступа в режиме реального времени они служат удобными именами, которые могут использоваться для ссылки на не очень удобный URL-адрес.

Команда удаленного доступа по сути является интерфейсом для управления списком записей, которые находятся в файле ./.git/config. Она нужна для управления удаленными хранилищами, удаления несуществующих, отслеживания определенных веток и смены адресов удаленных репозиториев (git change remote).

Отображение удаленных хранилищ

По умолчанию Git удаляет список ранее сохраненных удаленных подключений к другим репозиториям. При этом создается строка, в которой будут указаны имена удаленных репозиториев. Вызов git remote с параметром -v покажет список имен закладок репозитория и, кроме того, соответствующие им URL-адреса. Опция -v означает verbose. Команда git remote add создаст новую запись соединения в удаленном репозитории. После того как удаленная запись была настроена при помощи команды удаленного доступа, ее имя может быть передано другим командам Git для связи с хранилищем.

Конфигурация команды удаленного доступа

Ниже рассмотрены варианты использования команды для управления репозиториями. Простая запись git remote выдает список удаленных подключений. Существует несколько ее конфигураций. Команда удобна для внесения изменений в файл ./.git/config. Также его можно редактировать и вручную при помощи текстового редактора. Команда для удаленного доступа Git является одной из тех, что принимает дополнительные “подкоманды”.

git push remote

Варианты “подкоманд”:

  1. Команда “git remote add <name> <url>” используется для создания нового подключения к удаленному репозиторию. После добавления удаленного управления появляется возможность использовать <name> как удобный ярлык для <URL> в других командах. Эта подкоманда принимает параметр -f, который добавляет имя ветви сразу после создания удаленной записи. А также параметр --tags”, который немедленно извлекает <имя> и импортирует каждый тег из удаленного репозитория.
  2. Еще одна команда git remote rm <name> позволяет удалить соединение с удаленным репозиторием. Она изменяет /.git/config и удаляет файл с именем <name>. Если затем выполнить эту команду с префиксом remote_test, можно увидеть, что запись больше не существует.
  3. Запись git remote rename <old-name> <new-name> переименовывает удаленное соединение. При этом сначала указывается старое имя, а затем — новое. Чтобы изменить удаленный URL-адрес репозитория, необходимо обновить конфигурационный файл новым URL-адресом. В противном случае вы получите сообщение об ошибке.
  4. Команда get-url <name> выводит URL-адреса для удаленного доступа. При добавлении параметра - all будут перечислены все URL-адреса доступных удаленных хранилищ.
git remote origin

Ссылки на удаленный репозиторий

Git поддерживает множество способов для создания ссылки на удаленный репозиторий. Два самых простых из них: получение доступа к удаленному репозиторию через HTTP и через протоколы SSH.

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

Особенности клонирования репозитория: git remote origin

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

Когда разработчик клонирует репозиторий при помощи git clone, он автоматически создает с ним удаленное соединение. При клонировании Git по умолчанию называет центральное хранилище — origin, поэтому команда для обращения к нему записывается как git remote origin. Эта функция полезна для тех, кто создает локальную копию центрального репозитория, так как при ее помощи будет легче публиковать коммиты и сохранять изменения.

git change remote

Работа с ветками удаленно

Иногда нужно выяснить, какие ветки существуют в удаленном репозитории. Если вы используете GitHub или Gitweb для размещения вашего репозитория, обычно легко определить их имена. Но бывают случаи, когда они недоступны. Также можно управлять отдельными ветками при помощи команды git remote branches.

Удаленное отслеживание ветвей записывается так: <имя удаленного репозитория>/<ветка>. Например, для отображения ветки master на вашем origin-сервере при последнем обращении к ней, нужно проверить ветку origin/master. Если в процессе сотрудничества с другим разработчиком тот выкладывает обновленный проект с новой веткой, то на сервере он будет представлен как ссылка с указанием на коммит, названный именем этой ветки.

Статья закончилась. Вопросы остались?
Комментарии 0
Подписаться
Я хочу получать
Правила публикации
Редактирование комментария возможно в течении пяти минут после его создания, либо до момента появления ответа на данный комментарий.