Git обычно (если не указан) извлекает все ветки и / или теги (см. git ls-refs
) из одного или нескольких других хранилищ вместе с объектами, необходимыми для завершения их истории. Другими словами, он выбирает объекты, которые доступны объектам, которые уже загружены. Смотрите: Что на самом деле делает git fetch
Иногда у вас могут быть ветки / теги, которые не связаны напрямую с текущим, поэтому git pull --all
/ git fetch --all
не поможет в этом случае, но вы можете перечислить их по:
git ls-remote -h -t origin
и получить их вручную, зная имена ссылок.
Чтобы получить их все , попробуйте:
git fetch origin --depth=10000 $(git ls-remote -h -t origin)
Параметр --depth=10000
может помочь, если вы зашли в хранилище.
Затем снова проверьте все свои филиалы:
git branch -avv
Если приведенное выше не поможет, вам нужно вручную добавить недостающие ветви в отслеживаемый список (так как они каким-то образом потерялись):
$ git remote -v show origin
...
Remote branches:
master tracked
по git remote set-branches
как:
git remote set-branches --add origin missing_branch
, поэтому он может появиться под remotes/origin
после извлечения:
$ git remote -v show origin
...
Remote branches:
missing_branch new (next fetch will store in remotes/origin)
$ git fetch
From github.com:Foo/Bar
* [new branch] missing_branch -> origin/missing_branch
Устранение неполадок
Если вы все еще не можете получить ничего, кроме основной ветки, проверьте следующее:
- Дважды проверьте пульты (
git remote -v
), например,
- Подтвердите, что
git config branch.master.remote
равно origin
.
- Проверьте, указывает ли
origin
правильный URL-адрес с помощью: git remote show origin
(см. сообщение ).