git remote
В системе SVN используется единый централизованный репозиторий, служащий центром связи для разработчиков. Совместная работа ведется путем передачи наборов изменений между рабочими копиями разработчиков и центральным репозиторием. Однако модель распределенной совместной работы в Git предполагает, что каждый разработчик использует собственную копию репозитория со своей локальной историей и структурой веток. Обычно пользователи делятся не отдельными наборами изменений, а сериями коммитов. Вместо того чтобы выполнять коммит одного набора изменений из рабочей копии в центральный репозиторий, Git позволяет передавать между репозиториями целые ветки.
Команда git remote
входит в состав системы, отвечающей за синхронизацию изменений. Записи, зарегистрированные с помощью команды git remote
, используются в сочетании с командами git fetch, git push и git pull. Все эти команды отвечают за свою часть работы по выполнению синхронизации. Подробнее можно узнать, перейдя по соответствующим ссылкам.
git remote
Команда git remote
позволяет создавать, просматривать и удалять подключения к другим репозиториям. Удаленные подключения скорее похожи на закладки, чем на прямые ссылки на другие репозитории. Они служат удобными именами, с помощью которых можно сослаться на не очень удобный URL-адрес, а не предоставляют доступ к другому репозиторию в режиме реального времени.
Например, на следующем рисунке изображены два удаленных подключения из вашего репозитория к центральному репозиторию и репозиторию другого разработчика. Вместо того, чтобы ссылаться на них по их полным URL-адресам, вы можете передавать командам Git только ярлыки origin и john.
Связанные материалы
Расширенный журнал Git
СМ. РЕШЕНИЕ
Изучите Git с помощью Bitbucket Cloud
Обзор использования git remote
По сути, команда git remote
— это интерфейс для управления списком записей об удаленных подключениях, которые хранятся в файле /.git/config
репозитория. Для просмотра текущего состояния списка удаленных подключений используются следующие команды.
Просмотр конфигураций удаленных репозиториев Git
git remote
Список ваших удаленных подключений к другим репозиториям.
git remote -v
Аналогично команде выше, но включает URL-адрес каждого подключения.
Создание и изменение конфигураций удаленных репозиториев Git
Команда git remote
также предоставляет удобный способ изменения файла /.git/config
репозитория. Перечисленные ниже команды позволяют управлять подключениями к другим репозиториям и изменять файл /.git/config
репозитория. Такого же результата можно достичь, напрямую отредактировав файл /.git/config
с помощью текстового редактора.
git remote add <name> <url>
Создание нового подключения к удаленному репозиторию. После добавления удаленного репозитория имя <name>
можно использовать в качестве удобного ярлыка для адреса <url>
в других командах Git.
git remote rm <name>
Удаление подключения к удаленному репозиторию с именем <name>
.
git remote rename <old-name> <new-name>
Переименование удаленного подключения с имени <old-name>
на <new-name>
.
Обсуждение git remote
Git предоставляет каждому разработчику полностью изолированную среду разработки. Информация не передается между репозиториями автоматически. Вместо этого разработчикам нужно вручную загружать вышестоящие коммиты в локальный репозиторий или вручную отправлять локальные коммиты обратно в центральный репозиторий. Команда git remote
представляет собой простой способ передачи URL-адресов в эти команды обмена.
Удаленное подключение к origin
В процессе клонирования с помощью команды git clone
автоматически создается удаленное подключение к исходному репозиторию (такое соединение называется origin). Это позволяет разработчикам, создающим локальную копию центрального репозитория, легко загружать вышестоящие изменения или публиковать локальные коммиты. Именно поэтому большинство проектов на основе Git называют свой центральный репозиторий origin.
URL-адреса репозиториев
Git поддерживает различные способы ссылки на удаленный репозиторий. Два наиболее простых способа доступа к удаленному репозиторию: протоколы HTTP и SSH. Протокол HTTP — простой способ разрешить к репозиторию анонимный доступ только для чтения. Пример ниже.
http://host/path/to/repo.git
Однако HTTP-адрес, как правило, не позволяет отправлять коммиты (в любом случае вы не захотите разрешать анонимную отправку изменений с помощью команды push). Чтобы использовать доступ для чтения и записи следует использовать протокол SSH:
ssh://user@host/path/to/repo.git
Вам понадобится лишь действующий аккаунт SSH на хост-машине, а в остальном Git поддерживает аутентифицированный доступ через SSH по умолчанию. Необходимые URL-адреса предоставляются современными безопасными решениями для хостинга от сторонних провайдеров, например Bitbucket.com.
Команды git remote
Команда git remote
— одна из многих команд Git, которые принимают дополнительные «подкоманды». Ниже рассмотрены наиболее часто используемые подкоманды git remote
.
ADD <NAME> <URL>
Добавляет запись к ./.git/config
для удаленного репозитория с именем <name>
по URL-адресу <url>
.
Принимает параметр -f
, который запустит команду git fetch
сразу после создания записи об удаленном репозитории.
Принимает параметр --tags
, который немедленно запустит команду git fetch
и импортирует все теги из удаленного репозитория.
RENAME <OLD> <NEW>
Обновляет ./.git/config
для переименования записи с <OLD>
на <NEW>
. При этом обновляются все удаленно отслеживаемые ветки и настройки конфигурации удаленного репозитория.
REMOVE or RM <NAME>
Изменяет ./.git/config
и удаляет удаленный репозиторий с именем <NAME>
. При этом удаляются все удаленно отслеживаемые ветки и настройки конфигурации удаленного репозитория.
GET-URL <NAME>
Вывод URL-адресов для записи об удаленном репозитории.
Принимает параметр --push
, поскольку URL-адреса чаще отправляют с помощью команды push, а не извлекают с помощью fetch.
При указании параметра --all
будут перечислены все URL-адреса для данного удаленного репозитория.
SHOW <NAME>
Выводит общую информацию об удаленном репозитории с именем <NAME>
.
PRUNE <NAME>
Удаляет из репозитория <NAME>
все локальные ветки, которые отсутствуют в удаленном репозитории.
Принимает параметр --dry-run
, который выводит список удаляемых веток, но на самом деле не удаляет их.
Примеры git remote
Зачастую бывает удобно иметь подключение не только к репозиторию origin, но и к репозиториям коллег. Например, если ваш коллега Джон поддерживает общедоступный репозиторий на dev.example.com/john.git
, вы можете добавить подключение следующим образом:
git remote add john http://dev.example.com/john.git
Доступа к индивидуальным репозиториям разработчиков позволяет вести совместную работу за пределами центрального репозитория. Это может быть очень полезно для небольших команд, работающих над большим проектом.
Просмотр удаленных репозиториев
По умолчанию команда git remote
отображает ранее сохраненные удаленные подключения к другим репозиториям. Создается однострочный список закладок с именами удаленных репозиториев.
$ git remote
origin
upstream
other_users_repo
При вызове git remote
с параметром -v
будет выведен список закладок с именами и соответствующими URL-адресами репозиториев. Параметр -v
расшифровывается как «verbose» — подробный. Ниже приведен пример подробного вывода команды git remote
.
git remote -v
origin git@bitbucket.com:origin_user/reponame.git (fetch)
origin git@bitbucket.com:origin_user/reponame.git (push)
upstream https://bitbucket.com/upstream_user/reponame.git (fetch)
upstream https://bitbucket.com/upstream_user/reponame.git (push)
other_users_repo https://bitbucket.com/other_users_repo/reponame (fetch)
other_users_repo https://bitbucket.com/other_users_repo/reponame (push)
Добавление удаленных репозиториев
Команда git remote add
используется для создания записи о новом подключении к удаленному репозиторию. После добавления удаленного репозитория имя ./.git/config
репозитория. Ниже приведен пример обновления этого файла конфигурации.
$ git remote add fake_test https://bitbucket.com/upstream_user/reponame.git; [remote "remote_test"]
url = https://bitbucket.com/upstream_user/reponame.git
fetch = +refs/heads/*:refs/remotes/remote_test/*
Проверка удаленного репозитория
Для получения подробного вывода о конфигурации удаленного репозитория к команде git remote
можно добавить подкоманду show. Вывод будет содержать список веток, связанных с удаленным репозиторием, а также конечных точек, подключенных для извлечения (fetch) и отправки (push).
git remote show upstream
* remote upstream
Fetch URL: https://bitbucket.com/upstream_user/reponame.git
Push URL: https://bitbucket.com/upstream_user/reponame.git
HEAD branch: main
Remote branches:
main tracked
simd-deprecated tracked
tutorial tracked
Local ref configured for 'git push':
main pushes to main (fast-forwardable)
Получение и извлечение данных из удаленных репозиториев Git
После настройки записи об удаленном репозитории с помощью команды git remote
с этим репозиторием можно связываться, передавая его имя в качестве аргумента другим командам Git. Для чтения данных из удаленного репозитория можно использовать и git fetch, и git pull. Эти команды выполняют разные операции (более подробную информацию можно узнать, перейдя по соответствующим ссылкам).
Отправка данных в удаленные репозитории Git
Для записи данных в удаленный репозиторий используется команда git push
.
git push <remote-name> <branch-name>
В этом примере состояние локальной ветки <branch-name>
передается в удаленный репозиторий, обозначенный как <remote-name>
.
Переименование и удаление удаленных репозиториев
git remote rename <old-name> <new-name>
Принцип работы команды git remote
rename очевиден из названия. В результате ее выполнения происходит переименование удаленного подключения с имени <old-name>
на <new-name>
. Кроме того, изменяется контент ./.git/config
для переименования записи для удаленного репозитория.
git remote rm <name>
Команда git remote rm
удаляет подключение к удаленному репозиторию, обозначенному с помощью параметра <name>
. Чтобы показать работу команды, «отменим» добавление из последнего примера. После выполнения команды git remote rm remote_test
мы увидим, что запись [remote "remote_test"]
удалена из контента ./.git/config
.
Поделитесь этой статьей
Следующая тема
Рекомендуемые статьи
Добавьте эти ресурсы в закладки, чтобы изучить типы команд DevOps или получать регулярные обновления по DevOps в Atlassian.