Иконка подарка

Весенняя распродажа! Скидка 15% по промокоду

до 01.04.2026

Добавление удаленного репозитория в Git с помощью git remote add

27 марта 2026
Автор

Олег Марков

Введение

Добавление удаленного репозитория — один из первых шагов при работе с Git в команде. Как только вы инициализировали локальный репозиторий или склонировали существующий, следующим логичным действием часто становится привязка его к удаленному серверу: GitHub, GitLab, Bitbucket или внутреннему корпоративному Git-серверу.

Команда git remote add как раз и отвечает за это. С её помощью вы:

  • подключаете удаленный репозиторий к уже существующему локальному;
  • даете этому удаленному адресу удобное короткое имя, например origin;
  • настраиваете сразу несколько удаленных репозиториев для одного проекта;
  • подготавливаете почву для git push, git pull и git fetch.

Смотрите, я покажу вам, как именно работает git remote add, какие варианты синтаксиса стоит знать, как не запутаться с именами удаленных репозиториев и какие проблемы чаще всего возникают при её использовании.


Что такое удаленный репозиторий и remote в Git

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

Удаленный репозиторий

Удаленный репозиторий — это версия вашего Git-репозитория, которая хранится не на вашем локальном компьютере, а:

  • на Git-сервисе (GitHub, GitLab, Bitbucket);
  • на отдельном сервере в компании (например, внутренний GitLab или bare-репозиторий по SSH);
  • на другом компьютере, доступном по сети.

По сути, это просто репозиторий, к которому Git может обратиться по URL: https://..., ssh://... или через короткий SSH-путь вида git@server:group/project.git.

Remote в Git

Remote (удаленный) в контексте Git — это запись в настройках вашего локального репозитория, которая:

  • связывает краткое имя (например, origin, upstream) с конкретным URL;
  • хранится в конфигурации репозитория;
  • используется командами git push, git pull, git fetch и другими.

Проще говоря, remote — это «контакт в адресной книге». Вы не каждый раз указываете полный URL, а обращаетесь по короткому имени.


Базовый синтаксис git remote add

Давайте сразу посмотрим, как выглядит базовая форма команды.

git remote add <имя-удаленного-репозитория> <url>
# <имя-удаленного-репозитория> - короткое имя (обычно origin)
# <url> - адрес удаленного репозитория (HTTPS или SSH)

Пример:

git remote add origin https://github.com/user/project.git
# Добавляем remote с именем origin
# и связываем его с репозиторием на GitHub

После этой команды ваш локальный репозиторий «знает», куда отправлять изменения при git push (если вы настроите ветки) и откуда их получать.


Типичные сценарии использования git remote add

Сценарий 1. У вас уже есть локальный репозиторий без удаленного

Частая ситуация: вы начали проект локально, сделали несколько коммитов, а потом решили выложить его на GitHub или другой сервер.

Пошагово это будет выглядеть так:

  1. Инициализируете репозиторий (если ещё не сделали):
git init
# Создаем новый Git-репозиторий в текущей директории
  1. Добавляете файлы и коммитите:
git add .
# Добавляем все файлы в индекс

git commit -m "Initial commit"
# Фиксируем первый коммит
  1. Создаете пустой репозиторий на GitHub или другом сервисе (без README или с ним — не критично, главное понимать состояние истории).

  2. Добавляете удаленный репозиторий:

git remote add origin git@github.com:username/project.git
# Связываем локальный репозиторий с удаленным по SSH
  1. Проверяете, что remote добавился:
git remote -v
# Показывает список удаленных репозиториев с URL
  1. Отправляете изменения:
git push -u origin main
# Отправляем локальную ветку main на origin
# и устанавливаем отслеживание (флаг -u)

Сценарий 2. Требуется добавить второй удаленный репозиторий

Иногда нужно, чтобы один и тот же код хранился, например, и на GitHub, и на GitLab. Тогда вы можете настроить несколько remotes.

git remote add origin git@github.com:username/project.git
# Первый удаленный репозиторий - GitHub

git remote add gitlab git@gitlab.com:username/project.git
# Второй удаленный репозиторий - GitLab

Теперь вы можете по выбору отправлять изменения:

git push origin main
# Отправляем на GitHub

git push gitlab main
# Отправляем на GitLab

Сценарий 3. Подключение upstream к форку

Когда вы делаете fork репозитория, ваш удаленный origin указывает на ваш форк. Но часто нужно следить за оригинальным репозиторием (откуда вы сделали форк). В таком случае добавляют второй remote — upstream.

git remote add origin git@github.com:my-user/my-fork.git
# Ваш форк

git remote add upstream git@github.com:original-author/original-project.git
# Оригинальный репозиторий

Теперь вы можете подтягивать изменения из оригинального репозитория:

git fetch upstream
# Забираем новые коммиты из оригинального репозитория

git merge upstream/main
# Сливаем их в свою ветку main

Виды URL для git remote add

Git поддерживает несколько типов URL. Давайте разберем основные, с которыми вы столкнетесь на практике.

HTTPS URL

Самый понятный и привычный формат:

git remote add origin https://github.com/user/project.git
# Подключаем удаленный репозиторий по HTTPS

Особенности:

  • при git push Git может спрашивать логин и пароль или токен доступа;
  • удобно, когда SSH недоступен;
  • требует настройки персонального токена (PAT), если используется GitHub/GitLab и включена двухфакторная аутентификация.

SSH URL (рекомендуемый для разработки)

SSH-формат чаще используется в разработке, потому что не нужно вводить логин/пароль при каждом пуше.

git remote add origin git@github.com:user/project.git
# Подключение по SSH с использованием ключа

Особенности:

  • работает через SSH-ключи;
  • быстрее в повседневной работе (пуш и фетч не требуют ручного ввода пароля);
  • удобно для автоматизации (CI/CD, серверы).

Локальные и файловые URL

Иногда Git используют для обмена кодом между директориями на одном сервере.

git remote add backup /srv/git/project.git
# Локальный путь до "bare" репозитория

git remote add shared file:///srv/git/shared/project.git
# Явный файловый URL

Это полезно, когда вы настраиваете внутренний Git-сервер без веб-интерфейса или делаете резервную копию.


Как проверить, что удаленный репозиторий добавлен

После выполнения git remote add вы почти всегда хотите убедиться, что всё настроено корректно.

Команда git remote -v

git remote -v
# Показывает список удаленных репозиториев с URL для fetch и push

Пример вывода:

origin  git@github.com:user/project.git (fetch)
origin  git@github.com:user/project.git (push)
upstream  git@github.com:original-author/project.git (fetch)
upstream  git@github.com:original-author/project.git (push)

Здесь вы видите:

  • имена remotes (origin, upstream);
  • URL;
  • тип операции (fetch или push).

Ограничения и поведение git remote add

Важно понимать несколько моментов, чтобы не столкнуться с ошибками.

Нельзя добавить remote с уже существующим именем

Если вы попробуете добавить remote с именем, которое уже используется, Git выдаст ошибку.

git remote add origin git@github.com:user/project.git
# Допустим, origin уже существует

# Git ответит примерно так:
# fatal: remote origin already exists.

В такой ситуации у вас несколько вариантов:

  1. Переименовать существующий remote.
  2. Удалить существующий remote и добавить заново.
  3. Использовать другое имя.

Давайте разберем эти варианты подробнее.


Управление удаленными репозиториями после git remote add

Добавить remote — это только первый шаг. Часто приходится менять адрес, переименовывать или удалять запись.

Как переименовать удаленный репозиторий

Допустим, при клонировании вы получили remote origin, но хотите использовать другое имя (или наоборот).

git remote rename oldname newname
# Переименовываем remote oldname в newname

Пример:

git remote rename origin github
# Теперь вместо origin у вас есть github

Проверьте:

git remote -v
# Убедитесь, что новое имя отображается корректно

Как изменить URL существующего remote

Если адрес репозитория изменился (например, вы перенесли проект в другую организацию или поменяли протокол с HTTPS на SSH), не нужно добавлять новый remote, достаточно обновить URL.

Используем команду git remote set-url:

git remote set-url origin git@github.com:user/project.git
# Меняем URL удаленного репозитория origin

Пример смены HTTPS на SSH:

git remote set-url origin git@github.com:user/project.git
# Раньше был https-URL, теперь SSH

Вы можете отдельно менять URL для fetch и push, но это уже более продвинутый сценарий.

Как удалить удаленный репозиторий

Если remote больше не нужен (например, вы перестали использовать GitLab и остались только на GitHub), его можно удалить:

git remote remove gitlab
# Удаляем remote с именем gitlab

Альтернативная форма (устаревающая, но всё ещё поддерживаемая):

git remote rm gitlab
# То же самое, что remove

После этого команда git remote -v больше не будет показывать этот remote.


Как настроить несколько удаленных репозиториев для одного проекта

Иногда возникает потребность хранить один и тот же код в нескольких местах:

  • «боевой» репозиторий на внутреннем сервере;
  • зеркальный репозиторий на GitHub;
  • отдельный репозиторий для open-source версии.

Смотрите, как это можно организовать.

git remote add origin git@internal.example.com:team/project.git
# Основной внутренний сервер

git remote add github git@github.com:company/project.git
# Зеркало на GitHub

Теперь вы сами решаете, куда пушить:

git push origin main
# Отправляем на внутренний сервер

git push github main
# Отправляем на GitHub

При этом git pull по умолчанию использует тот remote, который настроен как «отслеживаемый» для вашей ветки. Обычно это origin, но можно поменять настройки ветки.


Взаимодействие git remote add с ветками и push/pull

Важно понимать, что git remote add сам по себе не настраивает пуш для веток. Он только создает «контакт» с URL. Остальное вы делаете вручную.

Связь ветки с remote при первом push

Часто вы видите команду:

git push -u origin main
# Флаг -u настраивает отслеживание ветки

Флаг -u означает: «сделать ветку main отслеживаемой от origin/main». После этого при простом git push или git pull Git уже знает, с каким remote и какой веткой работать.

Проверка связи ветки и remote

Посмотрите настройки текущей ветки:

git branch -vv
# Показывает локальные ветки и их "upstream" (отслеживаемые ветки)

Пример вывода:

* main 0a1b2c3 [origin/main] Initial commit
# Текущая ветка main отслеживает origin/main

Практические примеры по шагам

Давайте разберем несколько конкретных сценариев от начала до конца.

Пример 1. Новый локальный проект и GitHub

  1. Создаете папку и инициализируете Git:
mkdir my-project
cd my-project

git init
# Инициализация репозитория
  1. Создаете файл и делаете первый коммит:
echo "Hello" > readme.txt
# Создаем простой файл

git add readme.txt
# Добавляем файл в индекс

git commit -m "Add readme"
# Фиксируем изменения
  1. На GitHub создаете новый пустой репозиторий my-project.

  2. Добавляете remote:

git remote add origin git@github.com:username/my-project.git
# Привязываем локальный репозиторий к GitHub
  1. Отправляете изменения:
git push -u origin main
# Отправляем ветку main и настраиваем отслеживание

Теперь git push и git pull будут работать без указания имени remote и ветки.

Пример 2. Существующий репозиторий и переход с HTTPS на SSH

Предположим, вы сначала настроили remote по HTTPS, а потом настроили SSH-ключи и хотите переключиться.

  1. Проверяем текущий remote:
git remote -v
# Допустим, видим:
# origin  https://github.com/user/project.git (fetch)
# origin  https://github.com/user/project.git (push)
  1. Меняем URL на SSH:
git remote set-url origin git@github.com:user/project.git
# Устанавливаем новый SSH-адрес
  1. Проверяем:
git remote -v
# Теперь должно быть:
# origin  git@github.com:user/project.git (fetch)
# origin  git@github.com:user/project.git (push)

Теперь пуш будет идти по SSH, и система аутентификации может использовать ключи без пароля (или с паролем к ключу, если он установлен).


Важные детали, о которых часто забывают

Имена remote — это просто ярлыки

Названия origin, upstream, github, gitlab — это всего лишь договоренности. Git не заставляет вас использовать именно эти имена. Вы можете написать:

git remote add server git@my-server:repos/main.git
# Имя server - это ваша договоренность

Главное — чтобы вам было удобно и понятно.

Один remote может обслуживать несколько веток

Вам не нужно добавлять новый remote на каждую ветку. Один remote (origin) может содержать:

  • origin/main
  • origin/dev
  • origin/feature/x
  • и так далее.

Вы просто пушите разные локальные ветки на один и тот же remote:

git push origin dev
# Отправляем ветку dev в origin

git remote add не проверяет существование репозитория по URL

Когда вы выполняете:

git remote add origin git@github.com:user/non-existent.git

Git не проверяет, существует ли этот репозиторий на сервере. Проверка произойдет только при первой попытке git fetch или git push. Если адрес неверен или у вас нет прав, вы увидите ошибку уже при этих командах.


Типичные ошибки и способы их исправить

Ошибка: remote origin already exists

Сообщение:

fatal: remote origin already exists.

Это значит, что remote с именем origin уже создан. Что делать:

  1. Посмотреть существующие remotes:
git remote -v
# Убедитесь, какие remotes уже настроены
  1. Если вы хотите заменить существующий URL — используйте git remote set-url:
git remote set-url origin git@github.com:new-user/new-project.git
# Меняем URL для уже существующего origin
  1. Если текущий origin вообще не нужен — удалите и добавьте заново:
git remote remove origin
# Удаляем старый origin

git remote add origin git@github.com:new-user/new-project.git
# Добавляем новый origin

Ошибка: Permission denied (publickey) при первом push

Вы уже добавили remote по SSH, но первая попытка git push выдает:

Permission denied (publickey).
fatal: Could not read from remote repository.

Это не проблема git remote add как таковой, но она напрямую связана с тем, как вы добавляли URL. Нужно:

  1. Проверить наличие SSH-ключа:
ls ~/.ssh
# Обычно ключи называются id_rsa, id_ed25519 и т.п.
  1. Если ключа нет — создать его:
ssh-keygen -t ed25519 -C "your_email@example.com"
# Создаем новый SSH-ключ
# Следуйте подсказкам команды
  1. Добавить открытый ключ на GitHub, GitLab или другой сервис:
cat ~/.ssh/id_ed25519.pub
# Копируем содержимое и вставляем в настройках SSH-ключей на сервисе
  1. Повторить git push.

Ошибка: repository not found

Сообщение:

remote: Repository not found.
fatal: repository 'https://github.com/user/project.git/' not found

Чаще всего это означает:

  • у вас нет прав на доступ к этому репозиторию;
  • репозиторий действительно не существует;
  • или в URL опечатка.

Проверьте URL:

git remote -v
# Сравните URL с тем, что показывает GitHub или другой сервис

Если нужно — обновите:

git remote set-url origin правильный-URL
# Замените на правильный адрес

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

Иногда проще «начать заново» в части remotes.

  1. Удаляем все ненужные remotes:
git remote remove origin
git remote remove upstream
# Удаляем ненужные записи
  1. Добавляем заново корректные:
git remote add origin git@github.com:new-user/new-project.git
# Настраиваем новый origin
  1. Проверяем:
git remote -v
# Убеждаемся, что список корректный

Этот подход особенно полезен, если вы перенесли проект в другую организацию или поменяли Git-сервер.


Короткое резюме

Команда git remote add:

  • создает запись в вашем локальном репозитории, связывающую короткое имя (например, origin) с URL;
  • не проверяет существование репозитория немедленно, а только запоминает адрес;
  • является основой для дальнейшего использования git push, git pull, git fetch и работы с несколькими удаленными репозиториями.

Ключевые моменты, о которых стоит помнить:

  • имя remote — это просто ярлык, но принято использовать origin и upstream;
  • для изменения URL используйте git remote set-url, а не git remote add повторно;
  • удаление remote делается через git remote remove <name>;
  • несколько remotes в одном проекте — нормальная и часто полезная практика.

Теперь вы видите, что git remote add — не сложная, но крайне важная команда, без которой нормальная работа с удаленными репозиториями в Git практически невозможна.


Частозадаваемые технические вопросы по теме и ответы

Вопрос 1. Как сделать так, чтобы по умолчанию git push отправлял на не origin, а другой remote

Используйте настройку pushDefault:

git config remote.pushDefault github
# Теперь без указания remote git push будет отправлять на github

Проверьте:

git config remote.pushDefault
# Должно вывести github

Вопрос 2. Как задать разные URL для fetch и push у одного remote

Иногда нужно забирать изменения из одного репозитория, а отправлять в другой. Сделайте так:

git remote set-url origin git@github.com:user/read-only.git --push
# URL для push

git remote set-url origin git@github.com:user/write-only.git --add
# URL для fetch (по умолчанию, если без --push)

Проверьте через git remote -v.

Вопрос 3. Как узнать, в каком именно файле Git хранит информацию о remotes

Обычно настройки remote хранятся в .git/config внутри репозитория. Посмотреть:

cat .git/config
# В секции [remote "origin"] находятся URL и другие настройки

Не редактируйте этот файл без необходимости, лучше используйте git-команды.

Вопрос 4. Можно ли с помощью git remote add добавить remote только для чтения

Сам remote не бывает «только для чтения», всё зависит от прав на сервере и типа URL. Для read-only доступа используйте HTTPS-URL без токена с правом записи или SSH-ключ с ограниченными правами. Если у учетной записи нет прав на push, репозиторий фактически будет read-only.

Вопрос 5. Как клонировать репозиторий без origin, а потом добавить remote с другим именем

Сначала клонируйте с опцией --no-checkout и удалите origin, либо проще:

git clone --origin temp git@github.com:user/project.git
# Клонируем с временным именем temp

git remote rename temp myremote
# Переименовываем remote в myremote

Теперь у вас есть репозиторий с remote под нужным именем.

Стрелочка влевоПолучение изменений в Git с помощью git fetch

Постройте личный план изучения Git до уровня Middle — бесплатно!

Git — часть карты развития Frontend

  • step100+ шагов развития
  • lessons30 бесплатных лекций
  • lessons300 бонусных рублей на счет

Бесплатные лекции

Все гайды по Git

Открыть базу знаний

Лучшие курсы по теме

изображение курса

Основы Git

Антон Ларичев
AI-тренажеры
Гарантия
Бонусы
иконка звёздочки рейтинга4.9
3 999 ₽ 6 990 ₽
Подробнее
изображение курса

TypeScript с нуля

Антон Ларичев
AI-тренажеры
Практика в студии
Гарантия
Бонусы
иконка звёздочки рейтинга4.8
3 999 ₽ 6 990 ₽
Подробнее
изображение курса

Next.js - с нуля

Антон Ларичев
AI-тренажеры
Практика в студии
Гарантия
Бонусы
иконка звёздочки рейтинга4.7
3 999 ₽ 6 990 ₽
Подробнее

Отправить комментарий