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

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

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

git clone -b  

Пример:

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
Комментарии (10)
Решение
git clone --single-branch --branch  

Опция --single-branch действительна начиная с версии 1.7.10 и более поздних.

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

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

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

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

Ответ, который так не понравился копипастерам, был следующим:

git init
git remote add -t refspec remotename host:/dir.git
git fetch
Комментарии (3)

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

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

git clone 

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

git branch -a 

Оформить ветке, что вы хотите

git checkout 
Комментарии (7)

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

mkdir $BRANCH
cd $BRANCH
git init
git remote add -t $BRANCH -f origin $REMOTE_REPO
git checkout $BRANCH
Комментарии (5)
git checkout -b  

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

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

Итак, чтобы создать новую ветку на основе моего перечисления-счет-номер отделения я:

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

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

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

и"

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

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

git branch branch-05142011 origin/branch-05142011

Это даст вам сообщение типа - "Branch branch-05142011 set up to track remote branch branch-05142011 from origin."

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

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

Но автодополнение bash Дон'т получить этот ключ: --филиал

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

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