it-roy-ru.com

Как клонировать конкретную ветку Git?

Git clone будет копировать удаленную текущую рабочую ветку в локальную.

Есть ли способ самостоятельно клонировать конкретную ветку, не переключая ветки в удаленном репозитории?

2542
Scud

Пожалуйста, смотрите также другой ответ , который предпочитают многие люди.

Вы также можете убедиться, что вы понимаете разницу, в отличие от большинства злых комментаторов и даунвотеров. И разница в том, что, вызывая git clone --branch <branchname> url, вы выбираете все ветви и проверяете одну. Это может, например, означать, что ваш репозиторий имеет документацию 5 КБ или ветку вики и ветку данных 5 ГБ. И всякий раз, когда вы хотите отредактировать свою главную страницу, вы можете клонировать 5 ГБ данных.

Опять же, это не значит, что git clone --branch - это не способ сделать это, просто это не всегда то, что вы хотите достичь, когда вы спрашивая о клонировании конкретной ветки.

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

git clone --single-branch --branch <branchname> Host:/dir.git

на момент написания оригинального ответа ниже, у git не было опции --single-branch, но давайте сохраним его для полного удовлетворения злых пчел.

Коппастеры так сильно не любили ответ:

git init
git remote add -t refspec remotename Host:/dir.git
git fetch
708
Michael Krelin - hacker
git clone -b <branch> <remote_repo>

Пример:

git clone -b my-branch [email protected]:user/myproject.git

В Git 1.7.10 и более поздних версиях добавьте --single-branch, чтобы предотвратить выборку всех веток. Пример с веткой OpenCV 2.4:

git clone -b opencv-2.4 --single-branch https://github.com/Itseez/opencv.git
7287
Jorge E. Cardona

Вот действительно простой способ сделать это :)

Клонировать хранилище

git clone <repository_url>

Список всех филиалов

git branch -a 

Оформите нужную ветку

git checkout <name_of_branch>
237
superlogical

Чтобы клонировать ветку без извлечение других веток:

mkdir $BRANCH
cd $BRANCH
git init
git remote add -t $BRANCH -f Origin $REMOTE_REPO
git checkout $BRANCH
234
Edmar Miyake
git checkout -b <branch-name> <Origin/branch_name>

например, в моем случае:

 git branch -a
* master
  Origin/HEAD
  Origin/enum-account-number
  Origin/master
  Origin/rel_table_play
  Origin/sugarfield_customer_number_show_c

поэтому для создания новой ветки на основе моей ветки enum-account-number я делаю:

git checkout -b enum-account-number Origin/enum-account-number

После того, как вы нажмете return, произойдет следующее:

Branch enum-account-number set up to track remote branch refs/remotes/Origin/enum-account-number.
Switched to a new branch "enum-account-number

"

83
dkinzer

Создайте ветку в локальной системе с таким именем. например скажем, вы хотите получить ветку с именем "branch-05142011"

git branch branch-05142011 Origin/branch-05142011

Появится сообщение вроде: "Branch branch-05142011 настроен для отслеживания удаленной ветви branch-05142011 из Origin".

Теперь просто проверьте ветку, как показано ниже, и у вас есть код -
git checkout branch-05142011

24
PlanetUnknown
git --branch <branchname> <url>

Но завершение bash не получает этот ключ: --branch

Наслаждаться.

15
savgur