Содержание:
- Git clone не копирует все ветки по умолчанию
- Стандартные/часторекомендуемые методы и их ограничения
- Решение: как получить все ветки из удаленного репозитория?
- Шаг 1: склонируйте репозиторий
- Шаг 2: отредактируйте файл .git/config
- Шаг 3: загрузите все ветки
- Шаг 4: проверьте список веток
- Шаг 5: переключитесь на нужную ветку
- Вместо итога: почему это работает?
Проблема: вы выполнили git clone, но в локальном репозитории видна только основная ветка (main или master)? Попытки использовать git fetch --all или git branch -r не показывают остальные ветки? Это распространенная ситуация, и сейчас мы разберёмся, как правильно скачать все ветки git-репозитория.

Git clone не копирует все ветки по умолчанию
Когда вы выполняете команду git clone, git загружает только основную ветку (например, main или master). Остальные ветки не копируются с удаленного сервера (remote). Проблему можно решить, немного модифицировав файл .git/config, в этой статье раскроем этот способ.
Стандартные/часторекомендуемые методы и их ограничения
Увы, команды наподобие «git fetch all remote branches» у нас нет, поэтому многие пытаются решить проблему комбинацией:
git fetch --all
git branch -rНо часто это не дает эффекта:
git fetch --allне даёт загрузить все удаленные ветки, если конфигурация не настроена правильно.git branch -rне отображает их, так как Git «не видит» ссылки на все ветки.
Также в сети есть несколько советов, которые в реальности не всегда срабатывают: например, использовать команду:
git checkout --track -b local_branch_name origin/remote_branch_nameНо здесь есть нюанс: если git не получил ссылки на все удаленные ветки (из-за неправильной конфигурации .git/config), команда завершится ошибкой:
fatal: 'origin/branchname' is not a commit and a branch 'branchname' cannot be created from itТакже отмечу, что попытка решить проблему с помощью нейронок (DeepSeek, Qwen) ни к чему не привела (╯°□°)╯︵ ┻━┻ 🙂
Решение: как получить все ветки из удаленного репозитория?
Приведу полную пошаговую инструкцию для клонирования; если ваш репозиторий уже скопирован, и вам нужно просто получить отсутствующие ветки, начинайте с шага 2.
Шаг 1: склонируйте репозиторий
Начните с базовой команды, она создаст локальную копию репозитория, но пока только с основной веткой:
git clone <URL_репозитория>
# или
git clone --depth 5 https://username:password@github.com/username/repository.git--depth 5 позволит ограничить «глубину» копирования (подтянет не всю историю, а 5 последних коммитов). Вместо password можно использовать токен.
Шаг 2: отредактируйте файл .git/config
После клонирования откройте файл .git/config в текстовом редакторе. Найдите строку, которая выглядит так:
fetch = +refs/heads/master:refs/remotes/origin/masterЗамените её на следующую:
fetch = +refs/heads/*:refs/remotes/origin/*Пример: было — стало
# было
[remote "origin"]
url = https://github.com/John/project1
fetch = +refs/heads/master:refs/remotes/origin/master
# стало
[remote "origin"]
url = https://github.com/John/project1
fetch = +refs/heads/*:refs/remotes/origin/*Эта настройка указывает Git загружать все ветки с удаленного сервера.
Шаг 3: загрузите все ветки
Выполните команду:
git fetch --all # сюда также можно добавить параметр --depth 5, чтобы ограничить выборку нужным количеством коммитов из конца истории каждой удаленной веткиТеперь мы сможем получить/обновить все удаленные ветки.
Шаг 4: проверьте список веток
Чтобы убедиться, что ветки загружены, введите:
git branch -rВы увидите все доступные ветки (например, origin/feature, origin/dev).
Шаг 5: переключитесь на нужную ветку
Для работы с конкретной веткой используйте:
git checkout branchname # замените branchname на имя веткиПоздравляю! Теперь все ветки доступны:

Вместо итога: почему это работает?
- Параметр
fetchв конфиге определяет, какие ссылки (ветки) Git отслеживает. - Значение
+refs/heads/*означает, что нужно синхронизировать все ветки из удаленного репозитория.

