Как посмотреть список репозиториев Git
При работе с Git часто возникает необходимость посмотреть список репозиториев — но что именно вы хотите узнать? Список удалённых репозиториев текущего проекта? Ветки на сервере? Все локальные репозитории на вашем компьютере? В этом руководстве разберём все основные способы получить нужную информацию.
Что означает “список репозиториев git” #
Прежде чем искать репозитории, нужно понять, что именно вам нужно. В Git есть несколько разных концепций, которые люди часто путают:
Три разных вопроса #
1. Удалённые репозитории текущего проекта — это ссылки на внешние серверы (GitHub, GitLab и т.д.), которые используются вашим текущим проектом. Обычно их 1-2: origin (основной репозиторий) и upstream (если вы работаете с форком).
2. Ветки и объекты удалённого репозитория — это информация о том, какие ветки существуют на сервере, без необходимости клонировать весь репозиторий. Полезно перед клонированием или при работе с чужим проектом.
3. Локальные репозитории на вашем диске — это все папки с .git на вашем компьютере. Вы можете иметь десятки проектов, разбросанные по разным местам.
Разберём каждый случай отдельно.
Список удалённых репозиториев текущего проекта #
Если вы уже находитесь внутри git репозитория, получить список удалённых репозиториев очень просто.
Основные команды #
# Только имена удалённых репозиториев
git remote
# Имена и URL (для fetch и push)
git remote -v
# Детальная информация о конкретном remote
git remote show origin
Пример вывода #
$ git remote
origin
upstream
$ git remote -v
origin https://github.com/myuser/myproject.git (fetch)
origin https://github.com/myuser/myproject.git (push)
upstream https://github.com/original/myproject.git (fetch)
upstream https://github.com/original/myproject.git (push)
Команда git remote -v показывает все удалённые репозитории с указанием URL для операций fetch (загрузка) и push (выгрузка).
Что означает origin и upstream #
- origin — стандартное имя для основного репозитория, обычно вашего форка на GitHub или GitLab
- upstream — репозиторий оригинального проекта, из которого вы сделали форк. Используется для синхронизации с основной веткой разработки
Несколько remote в одном проекте #
Многие разработчики работают по workflow форка:
- Делают форк оригинального проекта на своём аккаунте
- Клонируют свой форк (это становится
origin) - Добавляют оригинальный репозиторий как
upstream
Это позволяет получать обновления из оригинального проекта и одновременно вести свою работу в форке.
# Добавить upstream после того, как вы склонировали форк
git remote add upstream https://github.com/original/repo.git
# Обновиться из upstream
git fetch upstream
git merge upstream/main
Список веток удалённого репозитория без клонирования #
Иногда нужно посмотреть, какие ветки существуют на сервере, не клонируя весь репозиторий. Для этого используется команда git ls-remote.
Базовый синтаксис #
# Посмотреть все ветки и теги удалённого репозитория
git ls-remote https://github.com/user/repo.git
# Только ветки
git ls-remote --heads https://github.com/user/repo.git
# Только теги
git ls-remote --tags https://github.com/user/repo.git
# Если remote уже добавлен, можно использовать его имя
git ls-remote --heads origin
Пример вывода #
$ git ls-remote --heads https://github.com/torvalds/linux.git
27eeba8c91ecfe1b4fb0a7e9a2f9c0f6e2a3b4c5 refs/heads/master
8d4e9f1c3b5a7d2e9f1c3b5a7d2e9f1c3b5a7d2e refs/heads/next
5f2e1d3c9a8b7c6d5e4f3a2b1c0d9e8f7a6b5c4d refs/heads/fixes
$ git ls-remote --tags https://github.com/torvalds/linux.git | head -5
0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b refs/tags/v6.1
1c2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d refs/tags/v6.1-rc1
2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e refs/tags/v6.2
Что означает HEAD #
В выводе вы можете увидеть строку вроде abcd1234... HEAD -> refs/heads/main. Это указывает, какая ветка является веткой по умолчанию на сервере.
Практическое применение #
Эта команда полезна для:
- Проверки, какие ветки доступны перед клонированием
- Проверки версий перед загрузкой
- Скриптов автоматизации, которым нужна информация о сервере без полного клонирования
Найти все локальные git репозитории на диске (Linux/macOS) #
Если вы не помните, где находятся ваши проекты, можно найти все репозитории на компьютере.
Простой способ #
# Найти все папки .git в домашней директории (не глубже 5 уровней)
find ~ -name ".git" -type d -maxdepth 5 2>/dev/null
# Показать только пути к самим репозиториям (без .git)
find ~ -name ".git" -type d -maxdepth 5 2>/dev/null | sed 's/\/.git//'
Почему maxdepth важен #
Параметр -maxdepth 5 ограничивает глубину поиска 5 уровнями вложенности. Это важно, потому что:
- Без этого поиск может занять очень долгое время
- В каждом репозитории может быть огромное количество файлов и папок
- Вы вряд ли разместите проекты глубже чем на 5 уровней от домашней директории
Красивый вывод со скриптом #
#!/bin/bash
# Скрипт для красивого отображения всех git репозиториев
echo "Git репозитории на вашем компьютере:"
echo "====================================="
find ~ -name ".git" -type d -maxdepth 5 2>/dev/null | while read gitdir; do
repo_path="${gitdir%/.git}"
echo ""
echo "📁 $repo_path"
# Показать текущую ветку
if [ -f "$gitdir/HEAD" ]; then
branch=$(cat "$gitdir/HEAD" | grep -oP 'ref: refs/heads/\K.*')
echo " Ветка: $branch"
fi
# Показать URL origin если он есть
if [ -f "$gitdir/config" ]; then
origin=$(grep -A1 '\[remote "origin"\]' "$gitdir/config" | grep url | awk '{print $3}')
[ -n "$origin" ] && echo " Origin: $origin"
fi
done
Поиск локальных репозиториев на Windows (PowerShell) #
На Windows можно использовать PowerShell для аналогичного результата:
# Найти все репозитории в профиле пользователя
Get-ChildItem -Path $env:USERPROFILE -Recurse -Filter ".git" -Directory -ErrorAction SilentlyContinue |
ForEach-Object {
$repo = $_.Parent.FullName
Write-Host "📁 $repo"
}
# Вариант с подробной информацией
Get-ChildItem -Path $env:USERPROFILE -Recurse -Filter ".git" -Directory -ErrorAction SilentlyContinue |
ForEach-Object {
$gitDir = $_.FullName
$repoPath = $_.Parent.FullName
Write-Host "`n📁 $repoPath"
# Показать текущую ветку
$headFile = Join-Path $gitDir "HEAD"
if (Test-Path $headFile) {
$branch = (Get-Content $headFile) -replace 'ref: refs/heads/', ''
Write-Host " Ветка: $branch"
}
}
Список своих репозиториев на GitHub #
Если вы хотите увидеть все репозитории своего аккаунта на GitHub, есть несколько способов.
Способ 1: GitHub CLI (рекомендуется) #
GitHub CLI (gh) — это официальный инструмент GitHub и самый удобный способ:
# Список всех репозиториев
gh repo list
# С ограничением на 100 репозиториев
gh repo list --limit 100
# Только собственные репозитории (без форков)
gh repo list --source
# Только форки
gh repo list --fork
# Репозитории конкретной организации
gh repo list myorganization
# Только приватные репозитории
gh repo list --visibility private
Способ 2: GitHub API без CLI #
Если GitHub CLI не установлен, можно использовать API напрямую:
# Требуется личный access token (создаётся в settings/tokens)
curl -s -H "Authorization: token YOUR_GITHUB_TOKEN" \
"https://api.github.com/user/repos?per_page=100&page=1" | \
python3 -c "import sys, json; repos = json.load(sys.stdin);
[print(f\"{r['full_name']} - {r['description'] or 'без описания'}\") for r in repos]"
Список репозиториев на GitLab #
Для GitLab процесс похож, но с использованием других инструментов.
GitLab CLI #
# Список репозиториев текущего пользователя
glab repo list
# С опциями
glab repo list --limit 100
glab repo list --owned # только собственные
GitLab API #
# Все проекты пользователя (требуется personal access token)
curl "https://gitlab.com/api/v4/projects?owned=true&per_page=100" \
-H "PRIVATE-TOKEN: YOUR_GITLAB_TOKEN" | \
python3 -c "import sys, json; repos = json.load(sys.stdin);
[print(r['path_with_namespace']) for r in repos]"
# Проекты конкретной группы/организации
curl "https://gitlab.com/api/v4/groups/GROUP_ID/projects?per_page=100" \
-H "PRIVATE-TOKEN: YOUR_GITLAB_TOKEN"
Управление удалёнными репозиториями #
Основные операции для управления remote:
# Добавить новый remote
git remote add upstream https://github.com/original/repo.git
# Переименовать remote
git remote rename origin old-origin
# Удалить remote
git remote remove upstream
# Изменить URL remote
git remote set-url origin [email protected]:user/repo.git
# Изменить только URL для push
git remote set-url --push origin [email protected]:user/repo.git
# Посмотреть детальную информацию о remote
git remote show origin
Частые практические сценарии #
Сценарий 1: Проверить URL репозитория (забыл откуда он) #
git remote -v
# или более детально
git remote show origin
Сценарий 2: Добавить upstream после форка #
# Вы создали форк на GitHub и склонировали его
git clone https://github.com/myname/myproject.git
cd myproject
# Добавить upstream
git remote add upstream https://github.com/original/myproject.git
# Обновиться из upstream
git fetch upstream
git rebase upstream/main
Сценарий 3: Заменить HTTPS на SSH #
# Текущие remote используют HTTPS
git remote -v
# Изменить на SSH (требует настройки SSH ключей)
git remote set-url origin [email protected]:username/repo.git
# Проверить
git remote -v
Сценарий 4: Найти, где клонирован конкретный проект #
# Ищем проект с определённым названием
find ~ -name "myproject" -type d -maxdepth 4 2>/dev/null
# Или если помните, что это git репозиторий
find ~ -type d -name ".git" -maxdepth 5 2>/dev/null -exec dirname {} \; | \
xargs -I {} sh -c 'echo {}; git -C {} remote -v'
FAQ — Часто задаваемые вопросы #
Как посмотреть список удалённых репозиториев git? #
Используйте команду git remote -v. Она покажет имена и URL всех удалённых репозиториев текущего проекта. Команда git remote без флагов показывает только имена.
Как посмотреть ветки удалённого репозитория без клонирования? #
Команда git ls-remote позволяет увидеть все ветки и теги удалённого репозитория без клонирования:
git ls-remote --heads https://github.com/user/repo.git
Как найти все git репозитории на компьютере? #
На Linux/macOS используйте find:
find ~ -name ".git" -type d -maxdepth 5 2>/dev/null | sed 's/\/.git//'
На Windows используйте PowerShell:
Get-ChildItem -Path $env:USERPROFILE -Recurse -Filter ".git" -Directory -ErrorAction SilentlyContinue
Как посмотреть список своих репозиториев на GitHub? #
Используйте GitHub CLI (самый удобный способ):
gh repo list
Или API:
curl -s -H "Authorization: token TOKEN" https://api.github.com/user/repos
Что означает origin в git remote? #
origin — это стандартное имя для удалённого репозитория, который вы клонировали. Обычно это основной репозиторий вашего проекта. Вы можете иметь несколько remote с разными именами для разных целей (origin, upstream, production и т.д.).
Как добавить второй remote в git? #
Используйте команду git remote add:
git remote add upstream https://github.com/original/repo.git
Первый аргумент — имя remote, второй — URL. После этого вы можете использовать этот remote в команде git fetch upstream, git merge upstream/main и т.д.
Как изменить URL remote репозитория? #
Используйте команду git remote set-url:
git remote set-url origin https://github.com/newuser/repo.git
# или на SSH
git remote set-url origin [email protected]:newuser/repo.git
Заключение #
Теперь вы знаете все основные способы получить список репозиториев в Git:
- Удалённые репозитории текущего проекта:
git remote -v - Ветки удалённого репозитория:
git ls-remote --heads <url> - Все локальные репозитории на диске:
find ~ -name ".git" -type d - Репозитории на GitHub/GitLab:
gh repo listили API
Выбирайте нужную команду в зависимости от того, что именно вы хотите узнать. Для получения более детальной информации о работе с удалёнными репозиториями, смотрите статью про /ru/git/git-remote-v/ и /ru/git/git-clone/.
Если вам нужно больше информации о работе с ветками на сервере, прочитайте статью про /ru/git/udalennye-vetki-git/. А если вы новичок и только начинаете работать с Git, начните со статьи про /ru/git/kak-sozdat-repozitorij-github/.