Клонируется не весь репозиторий

Почему при написании команды

git clone git://myrepo.com/project.git

у меня клонируется только одна ветка master, хотя на удаленном репозитории у меня несколько?


Ответы (2 шт):

Автор решения: Алексей Шиманский

Локально и не должны копироваться все ветки. По умолчанию вы на ветке master или main.

Можно, конечно, извлечь информацию об удалённых ветках

git fetch

и потом переключиться.

Можно просто посмотреть список удалённых веток через git branch -a

и дальше сделать checkout на нужную.


А локально отображаются только локальные ветки, что логично.

→ Ссылка
Автор решения: Pavel Mayorov

Проверьте свой .gitconfig в домашней директории, возможно там есть какие-то лишние настройки. Однако, если таких настроек нет - скорее всего, вы просто немного недопоняли произошедшее.

По умолчанию репозиторий клонируется целиком, со всеми ветками, тэгами и коммитами. Однако, локальные ветки не создаются, вместо этого удалённые ветки превращаются в так называемые remote-tracking branches (ветки отслеживания remote, т.е. удалённых репозиториев), по-русски ветки наблюдения или следящие ветки. Они находятся в отдельном пространстве имён и имеют префикс, соответствующий имени удалённого репозитория (по умолчанию origin).

Для примера допустим, что в удалённом репозитории была ветка foo, полное имя refs/heads/foo. В таком случае в локальном репозитории она станет origin/foo, полное имя refs/remotes/origin/foo.

Переключиться на такую ветку можно командой git checkout foo, но только если вы ещё не создали локальную ветку с тем же именем. Кстати, более полная форма этой команды - git checkout origin/foo -b foo.

→ Ссылка