Просмотр удаленных репозиториев в Git - команда git remote -v

17 декабря 2025
Автор

Олег Марков

Введение

Команда git remote -v — один из самых простых, но при этом самых полезных инструментов в повседневной работе с Git. С ее помощью вы за одну секунду можете понять, к каким удаленным репозиториям привязан ваш локальный проект, по каким адресам Git забирает изменения и куда отправляет ваши коммиты.

Смотрите, я покажу вам, как эта команда помогает контролировать конфигурацию, находить ошибки в настройках и избегать проблем при совместной разработке. Мы разберем, что именно выводит git remote -v, чем отличаются URL для fetch и push, как меняется вывод в разных ситуациях и как использовать эту команду вместе с другими подкомандами git remote.

Зачем нужен просмотр удаленных репозиториев

Когда вы работаете с Git-проектом, у вас почти всегда есть как минимум один удаленный репозиторий. Например:

  • репозиторий на GitHub, GitLab или Bitbucket;
  • зеркальный репозиторий внутри компании;
  • форк чужого проекта;
  • несколько удаленных источников для одной и той же кодовой базы.

Важно понимать, что Git не "подтягивает" список удаленных репозиториев автоматически при каждом действии. Он использует те адреса, которые вы один раз настроили. Если в конфигурации ошибка, вы можете долго пытаться сделать push или pull, и только git remote -v покажет вам, что Git вообще пытается подключиться не туда.

Просмотр удаленных репозиториев помогает вам:

  • быстро проверить, какой именно удаленный репозиторий используется по умолчанию;
  • убедиться, что у вас правильный протокол (HTTPS или SSH);
  • отличить URL для чтения (fetch) и для записи (push);
  • увидеть несколько удаленных репозиториев и понять, какой за что отвечает;
  • диагностировать проблемы с доступом и правами.

Теперь давайте перейдем к практике и разберемся, как выглядит вывод git remote -v и как его читать.

Базовый вывод git remote -v

Начнем с самого простого использования команды. Выполните в корне вашего Git-проекта:

git remote -v

Пример вывода, который вы можете увидеть:

origin  git@github.com:username/project.git (fetch)  # URL для получения изменений
origin  git@github.com:username/project.git (push)   # URL для отправки изменений

Разберем по частям каждую строку.

  • origin
    Имя удаленного репозитория. Чаще всего это origin, потому что Git автоматически так называет удаленный репозиторий, если вы клонируете проект с помощью git clone.

  • git@github.com:username/project.git
    Это URL (адрес) удаленного репозитория. В данном примере используется SSH-форма адреса.

  • (fetch) и (push)
    Роль этого URL. (fetch) — адрес, с которого Git будет забирать изменения. (push) — адрес, на который Git будет отправлять ваши коммиты при выполнении git push.

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

git remote -v

Вывод:

origin  https://github.com/company/project-readonly.git (fetch)   # Только чтение
origin  git@github.com:company/project.git (push)                 # Полный доступ
upstream  git@github.com:parent-org/project.git (fetch)           # Оригинальный репозиторий
upstream  git@github.com:parent-org/project.git (push)            # Можно отправлять изменения (если есть права)

Здесь уже два удаленных репозитория:

  • origin — ваш основной удаленный репозиторий;
  • upstream — исходный репозиторий, из которого, например, был создан форк.

Обратите внимание, что для origin используются разные адреса для fetch и push. Это позволяет, к примеру, получать код из репозитория с анонимным доступом (HTTPS) и отправлять через SSH с авторизацией.

Разница между git remote и git remote -v

Команда git remote без параметров показывает только имена удаленных репозиториев:

git remote

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

origin
upstream

То есть вы видите только имена, но не видите, к каким конкретно URL они привязаны.

Если вы добавите флаг -v (verbose, "подробный вывод"), Git покажет имена вместе с адресами и типом (fetch/push):

git remote -v

Вывод:

origin    git@github.com:username/project.git (fetch)
origin    git@github.com:username/project.git (push)
upstream  git@github.com:parent-org/project.git (fetch)
upstream  git@github.com:parent-org/project.git (push)

Давайте посмотрим, как это помогает в реальной задаче.

Представьте, что вы забыли, к какому GitHub-аккаунту привязан текущий проект. Вы можете:

  1. Выполнить git remote -v.
  2. Посмотреть на часть URL, где указан username.
  3. Понять, с каким учетным названием вы сейчас фактически работаете.

Это особенно полезно, когда на одной машине настроено несколько SSH-ключей или вы работаете с разными организациями.

Что означают fetch и push в выводе

Вы уже видели, что у каждого удаленного репозитория в выводе git remote -v может быть две строки — одна с пометкой (fetch), вторая с (push). Давайте разберемся, что именно за ними стоит.

fetch — получение изменений

URL с пометкой (fetch) используется, когда вы выполняете:

  • git fetch
  • git pull (который включает в себя fetch)
  • иногда другие команды, которые читают состояние удаленного репозитория.

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

Например:

git fetch origin  # Использует URL, помеченный как (fetch)

Комментарий:

# Git свяжется с сервером по адресу origin (fetch) и обновит ссылки
# на ветки, теги и другие объекты из удаленного репозитория

push — отправка изменений

URL с пометкой (push) используется при выполнении git push:

git push origin main  # Использует URL, помеченный как (push)

Комментарий:

# Git подключается по URL (push) для origin
# и пытается отправить ваши локальные коммиты в ветку main на сервере

Здесь важно учитывать права доступа. Могут быть ситуации, когда:

  • (fetch) указывает на публичный HTTPS-URL, доступный всем;
  • (push) указывает на SSH-адрес, доступный только вам с ключами и нужными правами.

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

Когда fetch и push совпадают

Во многих проектах адреса для fetch и push одинаковые. В этом случае вывод упрощается:

origin  git@github.com:username/project.git (fetch)
origin  git@github.com:username/project.git (push)

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

Как git remote -v связан с конфигурацией Git

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

Например, если вы посмотрите содержимое .git/config, то увидите примерно такой фрагмент:

[remote "origin"]
    url = git@github.com:username/project.git      # URL по умолчанию
    fetch = +refs/heads/*:refs/remotes/origin/*    # Что именно забирать при fetch

Комментарий:

# remote "origin" - имя удаленного репозитория
# url - базовый URL, который используется по умолчанию и для fetch и для push
# fetch - правило, какие ветки нужно синхронизировать

Если у вас разные URL для fetch и push, секция будет выглядеть так:

[remote "origin"]
    url = https://github.com/company/project-readonly.git   # URL для fetch
    fetch = +refs/heads/*:refs/remotes/origin/*
    pushurl = git@github.com:company/project.git            # URL для push

Комментарий:

# url - по умолчанию используется для fetch
# pushurl - переопределяет URL для операций push

Команда git remote -v читает именно эти поля url и pushurl и отображает их в удобном виде.

Вывод:

  • если задан только url — он показывается и для fetch, и для push;
  • если есть и url, и pushurl — url будет с (fetch), а pushurl — с (push).

Это важно понимать, если вы когда-то редактируете конфигурацию руками.

Типы URL в выводе git remote -v

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

HTTPS-URL

Пример:

origin  https://github.com/username/project.git (fetch)
origin  https://github.com/username/project.git (push)

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

  • Работает "из коробки", не нужны SSH-ключи.
  • Часто запрашивает логин и пароль или токен доступа, если вы не настроили кэширование.
  • Удобен для быстрой клонирования и одноразовых операций.

SSH-URL

Пример:

origin  git@github.com:username/project.git (fetch)
origin  git@github.com:username/project.git (push)

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

  • Требуется настроенный SSH-ключ.
  • Аутентификация происходит автоматически через ключ, без повторного ввода пароля.
  • Часто используется для постоянной разработки.

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

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

origin  /srv/git/project.git (fetch)
origin  /srv/git/project.git (push)

backup  file:///backup/git/project.git (push)
backup  file:///backup/git/project.git (fetch)

Эти варианты чаще встречаются в корпоративной инфраструктуре, при бэкапах или в тестовых сценариях.

Когда вы смотрите на вывод git remote -v, имеет смысл сразу оценить тип URL — это помогает понять, как именно Git будет аутентифицироваться и какие потенциальные проблемы могут возникнуть (например, нужен ли SSH-ключ или токен).

Практические сценарии использования git remote -v

Теперь давайте разберем несколько типичных задач, в которых git remote -v особенно полезен.

Проверка, к какому репозиторию привязан проект

Сценарий: вы склонировали какой-то проект давно, потом сделали несколько форков и теперь не помните, к какому именно репозиторию привязан этот локальный каталог.

Решение:

git remote -v

Комментарий:

# Посмотрите на значение после имени origin
# Так вы поймете, куда ведет ваш текущий репозиторий

Если вы видите, что origin указывает, например, на ваш личный форк, а вы ожидали оригинальный проект, это сразу заметно по части URL с username или организацией.

Быстрая диагностика проблем с push

Сценарий: вы выполняете git push origin main и получаете ошибку доступа или неизвестный хост. Причина может быть в неверном URL.

Решение: сначала проверьте, куда вообще Git пытается отправить данные.

git remote -v

Обратите внимание:

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

После этого уже можно исправлять URL (об этом будет чуть позже).

Понимание конфигурации форков: origin и upstream

Сценарий: вы сделали форк проекта на GitHub и хотите:

  • получать обновления из оригинального репозитория;
  • отправлять свои изменения в собственный форк.

Обычно:

  • origin — ваш форк;
  • upstream — оригинальный проект.

Посмотрим на конфигурацию:

git remote -v

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

origin    git@github.com:yourname/project.git (fetch)
origin    git@github.com:yourname/project.git (push)
upstream  git@github.com:parent-org/project.git (fetch)
upstream  git@github.com:parent-org/project.git (push)

Как это использовать:

  • git fetch upstream — получить изменения из оригинального проекта;
  • git push origin main — отправить свои изменения в собственный форк.

Команда git remote -v здесь помогает вам не перепутать, какой удаленный репозиторий за что отвечает.

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

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

git remote -v

Дальше вы уже принимаете решение:

  • нужно ли удалить какой-то remote;
  • нужно ли переименовать;
  • нужно ли изменить URL.

Гораздо безопаснее сначала посмотреть вывод git remote -v и только потом выполнять команды изменения.

Изменение конфигурации удаленных репозиториев и связь с git remote -v

Чтобы уверенно пользоваться git remote -v, полезно знать, как именно вы можете менять конфигурацию удаленных репозиториев. Давайте пройдемся по основным операциям и параллельно посмотрим, как меняется вывод.

Добавление нового удаленного репозитория

Представим, что вы хотите добавить еще один источник кода, например, оригинальный репозиторий в роли upstream.

Команда:

git remote add upstream git@github.com:parent-org/project.git

Комментарий:

# upstream - имя нового удаленного репозитория
# git@github.com:parent-org/project.git - URL, который вы привязываете

Теперь давайте посмотрим на вывод:

git remote -v

Ожидаемый результат:

origin    git@github.com:yourname/project.git (fetch)
origin    git@github.com:yourname/project.git (push)
upstream  git@github.com:parent-org/project.git (fetch)
upstream  git@github.com:parent-org/project.git (push)

Вы сразу видите новый remote с его URL.

Изменение URL для fetch и push

Бывают ситуации, когда вам нужно поменять протокол или адрес:

  • перевести origin с HTTPS на SSH;
  • указать отдельный URL только для push.

Посмотрим на два варианта.

1. Меняем URL и для fetch, и для push

Команда:

git remote set-url origin git@github.com:username/project.git

Комментарий:

# Устанавливаем новый базовый URL для remote origin
# Он будет использоваться и как fetch, и как push URL

Теперь снова проверяем:

git remote -v

Вывод:

origin  git@github.com:username/project.git (fetch)
origin  git@github.com:username/project.git (push)

2. Отдельный URL только для push

Допустим, вы хотите оставаться на HTTPS для fetch, но использовать SSH для push.

Сначала установим базовый URL (fetch):

git remote set-url origin https://github.com/company/project-readonly.git

Потом зададим pushurl:

git remote set-url --push origin git@github.com:company/project.git

Комментарий:

# --push говорит Git, что мы меняем только URL для операций push

Теперь давайте посмотрим вывод:

git remote -v

Результат:

origin  https://github.com/company/project-readonly.git (fetch)
origin  git@github.com:company/project.git (push)

Как видите, git remote -v сразу отражает разницу между fetch и push.

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

Иногда вы хотите поменять имя удаленного репозитория, не трогая его адрес. Например, переименовать origin в upstream или наоборот.

Команда:

git remote rename origin old-origin

Комментарий:

# Меняем имя remote origin на old-origin
# URL и все настройки при этом сохраняются

Теперь смотрим:

git remote -v

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

old-origin  git@github.com:username/project.git (fetch)
old-origin  git@github.com:username/project.git (push)

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

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

Если какой-то remote больше не нужен, вы можете его удалить.

Команда:

git remote remove upstream

Или эквивалентная короткая форма:

git remote rm upstream

Проверяем:

git remote -v

Теперь вы больше не увидите upstream в списке. Это полезно для поддержания чистоты конфигурации, чтобы лишние remotes не вводили в заблуждение.

Как git remote -v помогает избегать типичных ошибок

Давайте разберем несколько распространенных проблем, которые решаются с помощью одной только проверки git remote -v.

Ошибка: отправка в "чужой" репозиторий

Случай: вы работаете на одной машине с несколькими проектами, часто переключаетесь между каталогами и в какой-то момент выполняете git push, не проверив, в каком вы репозитории. В итоге изменения улетают не туда.

Защититься можно привычкой:

  1. Перед важным push выполнить git remote -v.
  2. Сверить, что origin действительно указывает на ожидаемый репозиторий.

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

Ошибка: неверный протокол и проблемы с доступом

Иногда проект был склонирован по HTTPS, и каждый push требует логина и пароля или токена. Вы хотите перейти на SSH.

Вы можете быстро понять, какой протокол используется:

git remote -v

Если видите HTTPS, а хотите SSH, вы просто меняете URL, как мы рассматривали выше, и снова проверяете вывод git remote -v, чтобы убедиться, что все настроено правильно.

Ошибка: забытый upstream в форке

В форкнутых проектах распространенная проблема — разработчик забывает настроить upstream и долго не понимает, почему локальные ветки не получают обновления из оригинального репозитория.

Проверка:

git remote -v

Если вы видите только origin и никакого upstream, значит, оригинальный репозиторий просто не привязан. Тогда вы добавляете его через git remote add и снова проверяете конфигурацию через git remote -v.

Ошибка: несколько remotes с похожими именами

Ситуация: у вас есть remotes с именами вроде origin, origin2, backup, mirror. Легко запутаться, куда вы на самом деле пушите изменения.

Вывод git remote -v помогает:

  • увидеть все remotes сразу с их адресами;
  • визуально отличить, какой из них боевой, какой резервный, какой тестовый.

Здесь можно договориться внутри команды о читаемых именах (например, production, staging, backup) и периодически проверять конфигурацию.

Расширенное использование git remote -v в большом проекте

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

Представим конфигурацию:

git remote -v

Вывод:

origin     git@github.com:company/project.git (fetch)
origin     git@github.com:company/project.git (push)
staging    ssh://git@staging.company.com/project.git (fetch)
staging    ssh://git@staging.company.com/project.git (push)
production ssh://git@prod.company.com/project.git (fetch)
production ssh://git@prod.company.com/project.git (push)
backup     file:///mnt/backup/git/project.git (push)
backup     file:///mnt/backup/git/project.git (fetch)

Как это может использоваться:

  • origin — основной репозиторий разработки, связанный с GitHub или внутренним сервером;
  • staging — репозиторий для промежуточного окружения;
  • production — репозиторий для боевого окружения;
  • backup — отдельное место для резервного копирования.

Используя один только вывод git remote -v, вы можете:

  • за секунду понять архитектуру синхронизации;
  • не перепутать, куда отправлять изменения для какого окружения;
  • проверять перед "опасными" push, что вы действительно пушите туда, куда нужно.

Здесь особенно важно, что git remote -v показывает ВСЕ remotes, а не только origin.

Заключение

Команда git remote -v — это простой, но очень информативный инструмент, который помогает держать под контролем конфигурацию удаленных репозиториев. Она показывает:

  • какие удаленные репозитории привязаны к вашему проекту;
  • какие URL используются для получения (fetch) и отправки (push) изменений;
  • какие протоколы применяются — HTTPS, SSH, локальные пути или файловые URL.

Практическая ценность в том, что перед любыми сетевыми операциями (git fetch, git pull, git push) вы можете за секунду проверить, куда на самом деле обращается Git. Это уменьшает количество ошибок, связанных с неправильными адресами, протоколами или учетными данными, и помогает лучше понимать архитектуру работы с удаленными репозиториями, особенно в форках и больших проектах с несколькими remotes.

Регулярно используя git remote -v, вы вырабатываете хорошую привычку: сначала смотреть на конфигурацию, а уже потом выполнять действия, которые меняют удаленные репозитории.

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

Как сделать так, чтобы git remote -v показывал разные URL для разных веток?

Git не настраивает URL per-branch напрямую, но вы можете использовать разные remotes и привязывать ветки к ним через upstream:

git branch --set-upstream-to=staging/main main
# Ветка main будет по умолчанию работать с remote staging

Теперь git push и git pull из ветки main будут использовать staging, а не origin. Посмотреть URL можно через git remote -v.

Почему git remote -v ничего не выводит?

Если команда git remote -v не показывает ни одной строки, значит, в репозитории еще не настроено ни одного удаленного репозитория. Решение — добавить хотя бы один remote:

git remote add origin git@github.com:username/project.git
git remote -v   # Теперь remote появится в выводе

Как вывести только URL без пометок fetch/push?

Напрямую git remote -v всегда показывает и пометки, и имена. Если вам нужны только URL, используйте:

git remote get-url origin
# Покажет URL для fetch

git remote get-url --push origin
# Покажет URL для push

Так вы получите только строку с адресом.

Как узнать, какой remote будет использоваться по умолчанию для push?

По умолчанию Git берет remote из настроек ветки. Проверить можно так:

git status -sb
# В скобках будет указана привязанная удаленная ветка, например origin/main

git config branch.main.remote
# Покажет имя remote, обычно origin

URL этого remote вы уже можете посмотреть через git remote -v.

Как увидеть удаленные ветки, связанные с конкретным remote?

Для этого используйте:

git branch -r
# Покажет все удаленные ветки

git ls-remote origin
# Покажет ссылки на ветки и теги именно для origin

Связь между конфигурацией ветки и remote можно проверить так:

git config branch.main.remote
# Имя remote, с которым работает ветка main
Изменение URL удаленного репозитория в Git - git remote set-urlСтрелочка вправо

Постройте личный план изучения 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 ₽
Подробнее

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