Как клонировать ветку в Git? [дубликат]

этот вопрос уже есть ответ здесь:

  • как клонировать одну ветку в Git? 14 ответов

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

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

7 ответов


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

вы также можете убедиться, что вы понимаете разницу, в отличие от большинства сердитых комментаторов и downvoters. И разница в том: вызывая git clone -b branch url вы получаете все филиалы и проверка одного. Это может, например, означать, что ваш репозиторий имеет документацию 5kB или ветвь wiki и ветвь данных 5GB. И всякий раз, когда вы хотите отредактировать свою переднюю страницу, вы может закончиться клонированием 5GB данных.

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

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

git clone --single-branch -b branch host:/dir.git

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

ответ так сильно нелюбим copypasters был такой:

git init
git remote add -t refspec remotename host:/dir.git
git fetch

git clone -b <branch> <remote_repo>

пример:

git clone -b my-branch git@github.com: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

клонировать филиала без получение другой ветки:

mkdir $BRANCH
cd $BRANCH
git init
git remote add -t $BRANCH -f origin $REMOTE_REPO
git checkout $BRANCH

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

клонировать репозиторий

git clone <repository_url>

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

git branch -a 

Проверьте ветку, которую вы хотите

git checkout <name_of_branch>

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

"


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

git branch branch-05142011 origin/branch-05142011

это даст вам сообщение, как - " филиал филиал-05142011 настроить для отслеживания удаленного филиала филиала-05142011 от источника."

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


git --branch <branchname> <url>

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

наслаждайтесь.