Как клонировать все удаленные ветки в Git?

У меня есть ветка master и ветка development, обе выложены на GitHub. Я cloned, pulled и fetched, но мне так и не удалось вернуть ничего, кроме ветки master.

Я уверен, что я упускаю что-то очевидное, но я прочитал руководство и не получил никакой радости.

Комментарии к вопросу (12)
Решение

Во-первых, клон удаленного ГИТ репозитория и КД в это:

$ git clone git://example.com/myproject
$ cd myproject

Далее, посмотрите на местные филиалы в вашем репозитории:

$ git branch
* master

Но есть и другие ветви, прячась в свой репозиторий! Вы можете увидеть их с помощью -это флаг:

$ git branch -a
* master
  remotes/origin/HEAD
  remotes/origin/master
  remotes/origin/v1.0-stable
  remotes/origin/experimental

Если вы хотите только быстро взглянуть на вышестоящий филиал, вы можете проверить его напрямую:

$ git checkout origin/experimental

Но если вы хотите работать на этой ветке, вы'll необходимо, чтобы создать местное отделение отслеживания, который выполняется автоматически:

$ git checkout experimental

и вы увидите

Branch experimental set up to track remote branch experimental from origin.
Switched to a new branch 'experimental'

Что последняя строка бросает некоторых людей: "в новый филиал на" - Да? Что это действительно означает, что ветвление происходит из индекса и создается локально для вас. Линии previous на самом деле более информативным, как он говорит вам, что филиал создается для отслеживания удаленных филиалов, которые, как правило, означает возникновение филиал/branch_name

Теперь, если вы смотрите на свои местные отделения, это то, что вы'll увидеть:

$ git branch
* experimental
  master

Вы можете следить за более чем один удаленный репозиторий с помощью удаленного git`.

$ git remote add win32 git://example.com/users/joe/myproject-win32-port
$ git branch -a
* master
  remotes/origin/HEAD
  remotes/origin/master
  remotes/origin/v1.0-stable
  remotes/origin/experimental
  remotes/win32/master
  remotes/win32/new-widgets

На данный момент, вещи становятся немного сумасшедшими, так что беги гифок, чтобы увидеть, что'ы происходит:

$ gitk --all &
Комментарии (25)

Если у вас много удаленных филиалов, которые вы хотите загрузить сразу, то:

$ git pull --all

Теперь вы можете оформить любую ветку, как вам нужно, не задев удаленный репозиторий.

Комментарии (13)

Это Баш сценарий помог мне:

#!/bin/bash
for branch in $(git branch --all | grep '^\s*remotes' | egrep --invert-match '(:?HEAD|master)$'); do
    git branch --track "${branch##*/}" "$branch"
done

Это позволит создать филиалы отслеживания для всех удаленных филиалов, кроме мастера (которых вы, вероятно, получил от исходной команды клона). Я думаю, что ты можешь еще нужно сделать

git fetch --all
git pull --all

чтобы убедиться в этом.

один лайнер: ветка-ГИТ | команда grep -v глава | жемчужно-не 'то Chomp ($_);\х|^*?\С*||; если (м|(.+)/(.+)| &усилитель;& не $д{$2}) {печати КК(ЖКТ филиал-отслеживайте $2 $1/$2\п)} еще {$Д{$_}=1}' | КШ-сервер XFS как обычно: проверьте в настройках, перед копированием РМ -РЧ Вселенной, как мы ее знаем

предоставление кредитов на один-лайнер пользователей КФУ

Комментарии (11)

Используя опцию --зеркало кажется, чтобы скопировать дистанционное отслеживание веток правильно. Однако, он устанавливает репозиторий как "голый" репозиторий, так что вы должны превратить его обратно в нормальное хранилище после.

git clone --mirror path/to/original path/to/dest/.git
cd path/to/dest
git config --bool core.bare false
git checkout anybranch

<суп>ссылка: ГИТ FAQ: Как я могу клонировать репозиторий с удаленной отслеживаемых ветках?

Комментарии (13)

Вы можете легко переключиться на ветку без использования фантазии "и ГИТ кассе -б somebranch происхождения/somebranch" по синтаксис. Вы можете просто сделать:

git checkout somebranch

Git автоматически делать правильные вещи:

$ git checkout somebranch
Branch somebranch set up to track remote branch somebranch from origin.
Switched to a new branch 'somebranch'

ГИТ будет проверять, является ли филиал с тем же именем существует в точности один пульт, и если это произойдет, он отслеживает ее так же, как если бы вы явно указали, что это's в удаленном филиале. Из Git-страница оформления заказа человек мерзавец 1.8.2.1:

если &ЛТ;филиал&ГТ; не нашли, но существует филиал слежения в В одном удаленном (назовем его &ЛТ;дистанционного&ГТ;) с таким же именем, как лечить эквивалент

и GT; $ ГИТ кассе -б <филиал> --отслеживать <дистанционное>/<филиал>

Комментарии (5)

О,

и GT; $ ГИТ кассе -б экспериментальные происхождения/экспериментальная

используя

$ git checkout -t origin/experimental

или более подробную информацию, но легче запомнить

$ git checkout --track origin/experimental

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

Комментарии (1)

Выполняемая вами выборка должна получить все удаленные ветки, но она не создаст для них локальных веток. Если вы используете gitk, вы должны увидеть удалённые ветки, описанные как "remotes/origin/dev" или что-то подобное.

Чтобы создать локальную ветку на основе удалённой ветки, сделайте примерно следующее:

git checkout -b dev refs/remotes/origin/dev
В результате должно получиться что-то вроде:
Ветка dev настроена на отслеживание удаленной ветки refs/remotes/origin/dev.
Переход на новую ветку "dev" 
Теперь, когда вы находитесь на ветке dev, "git pull" обновит вашу локальную ветку dev до той же точки, что и удаленная ветка dev. Обратите внимание, что при этом будут получены все ветки, но только та, на которой вы находитесь, окажется на вершине дерева.
Комментарии (4)

При выполнении команды "git clone git://location" будут извлечены все ветви и метки.

Чтобы работать над конкретной удалённой веткой, предположим, что она является исходной:

git checkout -b branch origin/branchname
Комментарии (4)

Использовать псевдонимы. Хотя, нет'т любое родной Git-репозиторий-вкладыши, вы можете определить свои собственные как

git config --global alias.clone-branches '! git branch -a | sed -n "/\/HEAD /d; /\/master$/d; /remotes/p;" | xargs -L1 git checkout -t'

и затем использовать его в качестве

git clone-branches
Комментарии (0)

Почему вы видите только на "Мастер"и

клон git загрузки всех удаленных удаленных филиалов, но по-прежнему считает их на "дистанционное" и, даже если эти файлы находятся в новый репозиторий. Там'с одним исключением, которое заключается в том, что процесс клонирования создает локальную ветку под названием "Мастер" из удаленную ветку под названием "Мастер" по. По умолчанию, филиал ГИТ показывает только местные отделения, который является, почему вы видите только, что "Мастер" по.

ветка-ГИТ показывает все филиалы, включая удаленные филиалы.


Как получить местные отделения

Если вы на самом деле хотите работать на ветке, вы'будете, вероятно, хотите, а "местные" по версии его. Для того, чтобы просто создавать локальные ветки удаленные ветки (не проверяя их и тем самым изменяя содержимое вашего рабочего каталога), вы можете сделать нечто подобное:

git branch branchone origin/branchone
git branch branchtwo origin/branchtwo
git branch branchthree origin/branchthree

В этом примере, branchone - название местного отделения вы'вновь создавая на основе происхождения/branchone; если вместо этого вы хотите создать местные отделения с разными именами, вы можете сделать это:

git branch localbranchname origin/branchone

Как только вы'ве создали местное отделение, вы можете увидеть его филиал ГИТ (помните, вы не'т нужна , чтобы увидеть местные филиалы).

Комментарии (1)

Это вовсе'т слишком сложно, это очень простой и прямой шаги следующим образом;

ГИТ выборки происхождения это вернет все удаленные ветки на локальный.

ветка-ГИТ это покажет вам все удаленные ветки.

ГИТ кассе-отслеживать происхождение/<филиал вы хотите оформить заказ и GT;

Проверьте, находитесь ли вы в нужной ветке на следующую команду;

git branch

Вывод будет такой;

*your current branch 
some branch2
some branch3 

Обратите внимание на * знак, обозначающий текущую ветку.

Комментарии (4)

Лучше поздно, чем никогда, но здесь это лучший способ, чтобы сделать это:

mkdir repo
cd repo
git clone --bare path/to/repo.git .git
git config --unset core.bare
git reset --hard

На данный момент Вы иметь полную копию удаленного РЕПО со всеми его'ветви с (проверить с ветке git). Вы можете использовать--зеркаловместо--голые, если ваш удаленный РЕПО собственных пультов.

Комментарии (8)

Просто сделать это:

$ git clone git://example.com/myproject
$ cd myproject
$ git checkout branchxyz
Branch branchxyz set up to track remote branch branchxyz from origin.
Switched to a new branch 'branchxyz'
$ git pull
Already up-to-date.
$ git branch
* branchxyz
  master
$ git branch -a
* branchxyz
  master
  remotes/origin/HEAD -> origin/master
  remotes/origin/branchxyz
  remotes/origin/branch123

Вы видите, 'в Git клон git://пример.ком/myprojectt' получает все, даже ветки, вы просто должны оформить заказ на них, то ваш местный филиал будет создан.

Комментарии (0)

Вам нужно только вставлять "клон git", чтобы получить все филиалы.

git clone 

Даже если вы видите только ветку master, вы можете использовать и"ветка-мерзавец", чтобы видеть все ветви.

git branch -a

И вы можете переключиться на любой ветви, которые у вас уже есть.

git checkout 

Дон'т беспокоиться, что после тебя "клон git" Ну, вы не'т нужно соединить с удаленного РЕПО, то "ГИТ ветку- " и "ГИТ кассе " могут быть выполнены успешно, когда вы закрываете ваш WiFi. Так доказано, что когда вы делаете и"клон git", он уже скопировал все ветки из удаленного РЕПО. После этого, вы Дон't нуждаются в удаленном РЕПО, ваши местные уже все ветки' коды.

Комментарии (3)

Предполагается, что git clone копирует весь репозиторий. Попробуйте клонировать его, а затем выполнить команду git branch -a. Должен появиться список всех ветвей. Если после этого вы захотите перейти на ветку "foo" вместо "master", используйте git checkout foo.

Комментарии (5)

Использовать мой инструмент ГИТ_remote_branch (необходимо Рубин установлен на вашем компьютере). Это'ы построенные специально для манипуляций с удаленными филиалами умер легко.

Каждый раз, когда он делает операцию от вашего имени, он печатает красным в консоли. С течением времени, они, наконец, придерживаться в ваш мозг :-)

Если вы Don'т хотим, ГРБ, чтобы выполнять команды от вашего имени, просто использовать 'объяснить' характеристика. Команды будут напечатаны в консоли вместо исполнены для вас.

Наконец, все команды имеют псевдонимы, чтобы облегчить запоминание.

Обратите внимание, что это альфа-версия ;-)

Здесь'ы помочь при запуске ГРБ помочь:

в <предварительно> git_remote_branch версия 0.2.6

Использование:

ГРБ создать branch_name [origin_server]

ГРБ опубликовать branch_name [origin_server]

ГРБ переименовать branch_name [origin_server]

ГРБ удалить branch_name [origin_server]

ГРБ трек branch_name [origin_server]

Примечания:

  • Если origin_server не указан, имя 'происхождение' предполагается (ГИТ'ы по умолчанию)
  • Переименовать переименовывает функциональность текущей ветви

Поясните мета-команды: вы можете также добавить любую команду с ключевое слово 'объяснить'. Вместо выполнения команды, git_remote_branch просто вывести список команд, которые необходимо выполнить для достижения этой цели.

Пример: ГРБ объяснить создание ГРБ объяснить создать на GitHub my_branch

Все команды имеют псевдонимы: создать: создать, новый удалить: удалить, уничтожить, убить, удалить, ГРМ публикации: публикации, remotize переименовать: переименование, рН, МВ, двигаться трек: трек, следовать, возьми, принеси </пред>

Комментарии (2)

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

Когда вы клонируете репозиторий вся информация о филиалах на самом деле загружены, но ветки скрыты. С помощью команды

$ git branch -a

вы можете показать все ветки репозитория, и с командой

$ git checkout -b branchname origin/branchname

тогда вы можете "загрузить" их вручную по одному.


Однако, когда вы хотите, чтобы клонировать РЕПО с большим количеством отделений все способы показано выше длительным и утомительным в отношении гораздо чище и быстрее, так что я собираюсь показать, хотя это'ы немного сложнее. Вам нужно три шага, чтобы добиться этого:

  1. Первый шаг

создайте новую пустую папку на вашем компьютере и клон зеркальная копия .папку Git из репозитория:

$ cd ~/Desktop && mkdir my_repo_folder && cd my_repo_folder
$ git clone --mirror https://github.com/planetoftheweb/responsivebootstrap.git .git

локальный репозиторий внутри my_repo_folder папка еще пустая, есть только скрытый .в Git папку, теперь вы можете увидеть и "ЛС-альт" по команде с терминала.

  1. Второй шаг

переключатель этот репозиторий из пустой (пустой) репозиторий для обычного репозитория путем переключения логическое значение на "голой" из конфигураций ЖКТ в false:

$ git config --bool core.bare false
  1. Третий Шаг

Возьмите все, что внутри текущей папки и создать все ветки на локальном компьютере, таким образом делая это нормальный РЕПО.

$ git reset --hard

Итак, теперь вы можете просто ввести команда "ветку в Git" и вы можете видеть, что все ветви загружаются.

Это быстрый способ, в котором вы можете клонировать Git репозиторий с все ветки сразу, но это's не то, что вы хотите сделать для каждого проекта.

Комментарии (2)

Клонирование из местного РЕПО не будет работать с Git &амп клон; ГИТ выборки: много филиалов/теги останутся, когда есть еще невыбранные.

Чтобы получить клон с все ветки и теги.

git clone --mirror git://example.com/myproject myproject-local-bare-repo.git

Чтобы получить клон с все ветки и теги, но и с рабочей копии:

git clone --mirror git://example.com/myproject myproject/.git
cd myproject
git config --unset core.bare
git config receive.denyCurrentBranch updateInstead
git checkout master
Комментарии (0)

ОК, когда вы клонируете репозиторий, у вас все есть филиалы...

Если вы просто сделать ветку в Git, они являются своего рода скрытой...

Так что, если вы'd, как, чтобы увидеть все название ветки, просто добавить - все такой флаг:

ветке git-все или Git в ветке -

Если вы просто выезд в филиал, вы получаете все, что вам нужно.

А как насчет того, если филиал создан кем-то другим после того, как вы клон?

В этом случае, просто делать:

Git для выборки

и снова проверяем все ветки...

Если вы хотите выбрать и оформить заказ на то же время, вы можете сделать:

Git для выборки && ГИТ кассе your_branch_name

Также созданные изображения ниже для вас, чтобы упростить то, что я сказал:

Комментарии (1)

Глядя на один из ответов на вопрос, я заметил, что он'ы можно укоротить:

for branch in  `git branch -r | grep -v 'HEAD\|master'`; do  
 git branch --track ${branch##*/} $branch;
done

Но будьте осторожны, если один из удаленных филиалов назван например admin_master он выиграл'т получить загружен!

Благодаря бигфиш за оригинальную идею

Комментарии (3)