Git клон будет вести копирование удаленной текущей рабочей ветки в локальную.
Можно ли каким-либо образом клонировать конкретную ветку без переключения ветвей в удаленном репозитории?
Пожалуйста, смотрите также другой ответ, который предпочитают многие люди.
Вы также можете убедиться, что вы понимаете разницу, в отличие от большинства злых комментаторов и downvoters. И разница в следующем: вызывая git clone --branch <branchname> url
вы 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
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
Чтобы клонировать ветвь без извлечения других ветвей:
mkdir $BRANCH
cd $BRANCH
git init
git remote add -t $BRANCH -f origin $REMOTE_REPO
git checkout $BRANCH
remote add
и checkout
как здесь, а затем git remote rm origin
для очистки.)
Вот простой способ сделать это:)
Клонировать хранилище
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
"
git pull origin
чтобы git branch -a
могла перечислить все новые (текущие) удаленные ветви.
git fetch
лучше, чтобы автоматическое слияние не происходило.
Создайте ветвь в локальной системе с этим именем. например скажем, вы хотите получить ветвь с именем "branch-05142011"
git branch branch-05142011 origin/branch-05142011
Он даст вам сообщение типа "Филиал ветки 05142011, настроенный для отслеживания удаленной ветки ветки 05142011 от источника".
Теперь просто просмотрите ветку, как показано ниже, и у вас есть код - git checkout branch-05142011
git --branch <branchname> <url>
Но завершение bash не получает этот ключ: --branch
Enjoy.