Содержание:
- 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:[email protected]/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/*
означает, что нужно синхронизировать все ветки из удаленного репозитория.