Как использовать команду git remote add origin для работы с удалёнными репозиториями - Академия Selectel

Команда git remote add origin для работы с удаленными репозиториями

Как создать удаленный репозиторий, подключиться к нему и какие команды Git использовать.

Введение

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

Немного теории

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

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

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

Имена веток слежения имеют вид <remote>/<branch>. Если один из разработчиков произвел отправку на удаленный сервер ветки develop, когда у второго разработчика есть своя локальная ветка develop, то удаленная ветка будет называться origin/develop и соответственно быть веткой слежения. При разработке orgin по умолчанию называется удаленный сервер.

Создание удаленного репозитория

Создадим новый репозиторий на GitHub. Для этого на сайте GitHub кликните на значок плюса справа сверху или перейдите по ссылке

Перед нами откроется следующая форма:

форма создания репозитория
  • Owner (владелец) – выбрать персональный аккаунт, который будет иметь полный доступ к данному репозиторию.
  • Repository name (название репозитория) – при названии репозитория принято использовать PascalCase (составные слова с заглавной буквы) и kebab-case (составные слова через дефис).
  • Description (описание) – описание проекта.
  • Public – кто угодно может просматривать репозиторий, но коммитить смогут только те аккаунты, которым вы предоставите доступ.
  • Private – никто, кроме вас, не сможет коммитить или просматривать данный репозиторий без права доступа.
  • Add a README file – создает readme.md файл, который нужен для добавления длинного описания.

После нажатия Create repository нас перекинет на страницу нашего нового репозитория. 

страница репозитория
Пример созданного репозитория на GitHub

Сейчас в созданном github repo нет никаких файлов. Чтобы их выгрузить из локального репозитория, нужно подключиться к удаленному.

Настройка подключения к удаленному репозиторию

Добавление удаленного репозитория. Команда git remote add origin

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

git remote add origin <URL>

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

Ссылочные объекты у подключаемого удаленного репозитория будут скопированы.

Подключение по HTTPS

git remote add origin https://github.com/ИМЯПОЛЬЗОВАТЕЛЯ/РЕПОЗИТОРИЙ.git

С помощью https будет проще работать на нескольких устройствах нежели с перемещением ssh ключей между ними. А порт 443, который используется данным протоколом, обычно открыт. Но для работы с этим способом подключения может понадобиться введения логина и пароля, например, при клонировании приватного репозитория.

Подключение по SSH

git remote add origin git@github.com:ИМЯПОЛЬЗОВАТЕЛЯ/РЕПОЗИТОРИЙ.git

Чтобы подключить репозиторий по ssh, нужно произвести генерацию пары SSH-ключей:

  • В Git Bash прописываете одну из двух команд, вставив свою почту от GitHub аккаунта:
ssh-keygen -t ed25519 -C "ПОЧТА_GitHub_АККАУНТА"  
ssh-keygen -t rsa -b 4096 -C "ПОЧТА_GitHub_АККАУНТА"
  • В директории С:/Users/имяпользователя/.ssh/ появятся файлы приватного и публичного (.pub) ключей. Публичный ключ необходимо прописать в настройках GitHub аккаунта, в разделе SSH Keys > Add new.

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

Для изменения адреса подключенного удаленного репозитория используется:

git remote set-url <remote_name> <remote_url>

Первое значение (<remote_name>) — название удаленного репозитория, второе значение (<remote_url>) — новый url.

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

Просмотр удаленного репозитория

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

git remote

Указав ключ -v, можно просмотреть, какие адреса в добавленных удаленных репозиториях используются для чтения и записи.

Полный список удаленных ссылок можно получить с помощью команды:

git ls-remote <remote> 

Либо для получения удаленных веток и дополнительной информации используйте команду:

git remote show <remote> 

<remote> — название удаленного репозитория, которое ему дали после подключения. Можно использовать и url интересующего удаленного репозитория.

облако команд

Изменение удаленного репозитория

Чтобы отправить изменения (имя ветки) <branch-name> на сервер <remote-name>, задействуйте команду:

git push <remote-name> <branch-name>

Если ветка, которую вы хотите отправить, не отслеживается, то добавьте флаг —set-upstream. На примере ветки develop это будет выглядеть вот так:

git push --set-upstream origin develop

В GitHub же есть кнопка (Add file) для загрузки или создания файлов прямо в удаленном репозитории.

add file

Так же возможно переименование удаленного репозитория с прежнего имени <old-name> на новое <new-name>.

git remote rename <old-name> <new-name>

Получение изменений из удаленного репозитория

Для связи с указанным удаленным репозиторием используется следующая команда, которая подтянет новые изменения на локальный репозиторий:

git fetch [remote-name]
локальный репозиторий после git fetch
Локальный репозиторий после выполнения git fetch

После выполнения команды появляются ссылки на все ветки из указанного удаленного репозитория. Данная команда забирает данные в наш локальный репозиторий, но не объединяет или перебазирует их с коммитами в локальном репозитории, связанного с удаленным. Поэтому используйте merge или rebase, когда закончите работать над изменениями.

Если ветка настроена на отслеживание удаленной ветки, то можно использовать более удобную команду:

git pull 

Данная команда заменяет прописывание двух команд:

git fetch; git merge

Есть и универсальнее способ: клонирование репозитория. Клонирование копирует все файлы и коммиты удаленного репозитория, после чего уже можно использовать предыдущую команду — git fetch, если понадобятся новые изменения из удаленного репозитория.

git clone [url]

Клонирование может быть по HTTPS, либо по SSH. Рассмотрим каждый вариант.

  1. По HTTPS
  • Может быть использовано независимо от видимости репозитория.
  • Понадобятся имя пользователя и пароль аккаунта GitHub. В качестве пароля используется персональный токен доступа. Сгенерировать персональный токен доступа можно в настройках профиля GitHub (Settings > Developer Settings > Personal access tokens).
  • Команда будет иметь вид:
git clone https://github.com/ИМЯПОЛЬЗОВАТЕЛЯ/РЕПОЗИТОРИЙ.git
  1. По SSH
  • Доступ к гиту предоставляется по защищенному протоколу.
  • Необходимо сгенерировать пару SSH-ключей и добавить публичный ключ в аккаунт GitHub.
  • Команда будет иметь вид:
git clone git@github.com:ИМЯПОЛЬЗОВАТЕЛЯ/РЕПОЗИТОРИЙ.git

В GitHub есть зеленая кнопка (Code), кликнув на которую можно будет скопировать url-адрес для выбранного способа клонирования или скачать архивом данный репозиторий.

клонирование ветки

Для клонирования определенной ветки репозитория, допишите флаг —single-branch:

git clone --single-branch [url]

После работы git clone отслеживание удаленный ветки ставится автоматически.

Если же при клонировании вы хотите другое название (не origin) удаленному репозиторию, то выполните:

git clone -o ticgit

Тогда по умолчанию ветка слежения будет иметь вид ticgit/master (tcgit — пример названия удаленного репозитория).

Работа git clone пошагово выглядит так:

  1. Создается новая директория.
  2. В ней создается репозиторий посредством выполнения git init.
  3. Выполняется команда git remote add origin, которая добавляет по URL (назван origin) удаленный репозиторий.
  4. Подхватываются новые изменения данного удаленного репозитория через git fetch.
  5. С помощью git checkout извлекается последний коммит в рабочую директорию.
репозитории после клонирования

Удаление удаленного репозитория

Если интересует убрать подключение к удаленному репозиторию, то используйте команду

git remote rm <name>

Где <name> — название репозитория. Вместе с тем удалятся настройки и отслеживаемые ветки.

Чтобы удалить сам удаленный репозиторий, это нужно сделать на сервере, на котором он размещен. На GitHub перейдите в раздел настроек (“Settings”), проскрольте до самого низа, где будет поле Danger Zone. Нажмите на Delete this repository, в открывшемся новом поле введите *Имя пользователя*/*Названия репозитория* для подтверждения удаления. В нашем случае это T.Rex/git-remote-add-origin.

поле для удаления репозитория
Поле с возможностью удаления репозитория на GitHub

Заключение

Мы создали удаленный репозиторий, узнали про подключение удаленного репозитория разными способами, рассмотрели команды clone, fetch, push, pull для взаимодействия с ним.