Git не показывает все ветки на локальном

Я разветкил репо из Гитуба. При выполнении git remote -v он отображает:

origin  https://github.com/myusername/moodle.git (fetch)
origin  https://github.com/myusername/moodle.git (push)
upstream    https://github.com/moodle/moodle.git (fetch)
upstream    https://github.com/moodle/moodle.git (push)

moodle.git имеет около 10 ветвей, но на репо показано только 2 из них. При выполнении git branch -a (показать все ветки) я получаю:

  MOODLE_24_STABLE// just these two on local..how?
* master//
  origin/MOODLE_13_STABLE
  origin/MOODLE_14_STABLE
  origin/MOODLE_15_STABLE
  origin/MOODLE_16_STABLE
  origin/MOODLE_17_STABLE
  origin/MOODLE_18_STABLE
  origin/MOODLE_19_STABLE
  origin/MOODLE_20_STABLE
  origin/MOODLE_21_STABLE
  origin/MOODLE_22_STABLE
  origin/MOODLE_23_STABLE
  origin/MOODLE_24_STABLE
  origin/master
  upstream/MOODLE_13_STABLE
  upstream/MOODLE_14_STABLE
  upstream/MOODLE_15_STABLE
  upstream/MOODLE_16_STABLE
  upstream/MOODLE_17_STABLE
  upstream/MOODLE_18_STABLE
  upstream/MOODLE_19_STABLE
  upstream/MOODLE_20_STABLE
  upstream/MOODLE_21_STABLE
  upstream/MOODLE_22_STABLE
  upstream/MOODLE_23_STABLE
  upstream/MOODLE_24_STABLE
  upstream/master

Как решить проблему без потери данных или каких-либо нарушений?

Ответ 1

Клонирование репо не будет дублировать все удаленные ветки на локальном репо: для большого удаленного репо с большим количеством ветвей, которые загрязнят ваше локальное пространство имен тоннами ветвей.

У меня есть команда one-liner для создания локальных ветвей, отслеживающих все удаленные ветки удаленного репо, но это обычно не требуется.
Вы только создаете локальную ветвь, отслеживающую удаленный, когда это необходимо.

git checkout -b aBranch --track origin/aBranch

# or, shorter:
$ git checkout --track origin/aBranch 
Branch aBranch set up to track remote branch refs/remotes/origin/aBranch.
Switched to a new branch "aBranch"  

# even shorter at the end of this answer.

Добавление --track позволяет настроить конфигурацию, чтобы отметить ветвь начальной точки как " вверх по течению" из новой ветки.
Эта конфигурация сообщит git, чтобы показать связь между двумя ветвями в git status и git branch -v.
Кроме того, он направляет git pull без аргументов, чтобы вытащить из восходящего потока, когда извлечена новая ветка.


kostix упоминает, что --track подразумевается при разветвлении ветки с удаленной ветки (если branch.autosetupmerge не установлено на false)

Этого может быть достаточно

git checkout aBranch

Точное объяснение из git checkout man page:

Если <branch> не найден, но существует ветвь отслеживания точно в одном удаленном (назовем ее <remote>) совпадающим именем, считайте ее эквивалентной:

$ git checkout -b <branch> --track <remote>/<branch

Ответ 2

Несколько раз, если вы не вытащили последний код, вам не будет разрешено проверять только что созданную ветку. Поскольку ваши изменения не синхронизированы.

Итак, сначала -Подробнее -checkout из вновь созданной ветки