У меня есть локальный репозиторий Git под названием 'skeleton', который я использую для хранения скелетов проекта. Имеет несколько филиалов для разных видов проектов:
casey@agave [~/Projects/skeleton] git branch
* master
rails
c
c++
Если я хочу проверить основную ветку для нового проекта, я могу сделать
casey@agave [~/Projects] git clone skeleton new
Initialized empty Git repository in /Users/casey/Projects/new/.git/
и все как я хочу. В частности, новая основная ветвь указывает на основную ветвь скелета, и я могу толкать и тянуть, чтобы перемещаться вокруг изменений в базовой настройке проекта.
Однако не работает, если я хочу клонировать другую ветку. Я не могу получить его так, чтобы я просто вытягивал нужную ветку, например, rails
ветку, и тогда в новом хранилище есть master
ветвь, которая rails
по умолчанию выталкивает и извлекает из ветви хранилища скелетов .
Есть ли хороший способ сделать это? Или, может быть, это не тот способ, которым Git хочет, чтобы я структурировал вещи, и я, безусловно, открыт для этого. Возможно, у меня должно быть несколько репозиториев, с хранилищем скелетов Ruby on Rails, отслеживающим главное хранилище скелетов? И любой отдельный проект, клонирующий хранилище Ruby on Rails.
git branch -a
показывает?git checkout -b newbranch origin/branchiwant
работать лучше? (без--track
опции)Ответы:
Примечание: git1.7.10 (апрель 2012) фактически позволяет вам клонировать только одну ветку :
Вы можете увидеть это в
t5500-fetch-pack.sh
:Тобу комментирует, что:
А начиная с Git 1.9.0 (февраль 2014 г.), мелкие клоны поддерживают передачу данных (push / pull), поэтому эта опция стала еще более полезной.
См. Больше в " Является ли
git clone --depth 1
(мелкий клон) более полезным, чем он показывает? "«Отмена» мелкого клона подробно описана в разделе « Преобразование мелкого клона в полный клон » (git 1.8.3+).
Как Крис комментирует:
В Git 2.26 (Q1 2020) «
git clone --recurse-submodules --single-branch
» теперь использует ту же опцию для одной ветви при клонировании подмодулей .См. Коммит 132f600 , коммит 4731957 (21 февраля 2020 г.) Эмили Шаффер (
nasamuffin
) .(Слиты Junio C Hamano -
gitster
- в фиксации b22db26 , 5 марта 2020)источник
git clone <url> --branch <branch> --single-branch <folder>
работает как шарм.clone --depth 1
самый простой способ сэкономить пропускную способность.--depth 1
небезопасны для пользователя, потому что они, возможно, захотят использовать push / pull с новым клоном.--single-branch
естьgit config remote.origin.fetch +refs/heads/*:refs/remotes/origin/*
иgit fetch --unshallow
(git v2.1.4)Одним из способов является выполнение следующего.
Где
branch_name
находится выбранная вами ветка, а "/ your / folder" - это папка назначения для этой ветки. Это правда, что это принесет другие ветви, дающие вам возможность сливаться взад и вперед.Обновить
Теперь, начиная с Git 1.7.10, теперь вы можете сделать это
источник
--single-branch
для извлечения только историю, связанную с этой веткой, вместо всех историй и тегов, содержащихся в хранилище.Используя Git версии 1.7.3.1 (в Windows), вот что я делаю (
$BRANCH
это название ветви, которую я хочу оформить, и$REMOTE_REPO
URL удаленного репозитория, из которого я хочу клонировать):Преимущество этого подхода состоит в том, что последующие
git pull
(илиgit fetch
) вызовы также просто загружают запрошенную ветку.источник
git clone -b $BRANCH $REMOTE_REPO $BRANCH
афик они одинаковые?git clone -b
что все удаленные ссылки (все удаленные ветки и теги)git branch -a
отображаются как показано. С моим сценарием вы просто получаете один реф.-t $BRANCH
работает даже без-f
, который будет доставлен немедленно. Тогда,git fetch origin
принес бы, иgit checkout $BRANCH
установил бы местное отделение и оформить заказ. Это полезно, когда вам нужно настроить пульт перед загрузкой, напримерgit config remote.origin.uploadpack=/bin/upload-pack
.branch -a
показалоorigin/$BRANCH
. Делаяgit checkout origin/$BRANCH
это исправлено.Вы можете попробовать долгий путь:
Что это делает:
Надеюсь, это будет что-то вроде того, что вы после.
источник
git branch -r
?git branch -r
дает вывода.Вы можете сделать это с помощью следующей команды:
источник
Из справочной страницы git-clone :
--single-branch
ваш друг во время клонирования не забудьте использовать с--branch <branch name>
или только удаленный первичный HEAD будет клонирован (мастер по умолчанию)Всегда не забывайте делать Ctrl+, F5чтобы читать свежий исходник, а не тот, что из кеша :-) (я так давно не знал об этой опции).
источник
Просто введите URL и название филиала.
источник
Клонировать только одну ветку. Это самый простой способ:
источник
Для клонирования конкретной ветки вы можете сделать:
git clone --branch yourBranchName git@yourRepository.git
источник
Для клонирования ветки Git, к которой у вас нет открытого ключа, используйте это:
источник
Откройте cmd.
cd folder_name
(введите путь клонирования ветки)Всего одна команда:
источник
Немного поздно, но я хотел добавить решение, которое использовал для решения этой проблемы. Я нашел решение здесь .
Во всяком случае, кажется, что возникает вопрос: «Как начать новый проект из ветки другого репо?»
Для этого я решил создать новое репо в github или где-либо еще. Это послужит репо вашему новому проекту.
На локальном компьютере перейдите к проекту, в котором есть ветвь, которую вы хотите использовать в качестве шаблона для нового проекта.
Запустите команду:
Что это сделает, это переместит old_branch в new-repo и сделает его главной веткой нового репо.
Затем вам просто нужно клонировать новый репозиторий в локальный каталог вашего нового проекта, и у вас есть новый проект, запущенный в старой ветке.
источник
Давайте возьмем пример колбы репо. Он имеет 3 филиала в дополнение к мастеру. Давайте проверим удаленную ветку 1.1.x
клонировать мерзавец репо
CD в репо.
получить удаленную ветку 1.1.x
Оформить заказ
Вы переключитесь на ветку 1.1.x и она будет отслеживать удаленную ветку 1.1.x.
источник
Подобно тому, что @ nosaiba-darwish сказал здесь: здесь
Вот что мы обычно делаем в нашей компании:
git clone -b <name_of_branch> --single-branch <git_url> folder_to_clone_locally
источник
Если вы хотите мелкий клон, вы можете сделать это с:
--depth=1
подразумевает--single-branch
.источник
Для этого есть прежде всего 2 решения:
git clone -b <BRANCH_NAME> <GIT_REMOTE_URL>
Пример: git clone -b tahir https://github.com/Repository/Project.git
Следующая команда клонирует ветку tahir из репозитория git. Приведенная выше команда клонирует только конкретную ветку, но извлекает детали других ветвей. Вы можете просмотреть все детали филиалов с помощью команды.
git branch -a
git clone -b <BRANCH_NAME> --single-branch <GIT_REMOTE_URL>
Пример: git clone -b tahir --single-branch https://github.com/Repository/Project.git
Теперь, если вы сделаете a
git branch -a
, он покажет только вашу текущую отдельную ветку, которую вы клонировали, а не все ветви. Так что это зависит от вас, как вы этого хотите.Надеюсь, это поможет кому-нибудь когда-нибудь !! ...
источник
Вы можете использовать эту команду для git отдельной ветки и переименования папки, если вы хотите оставить ветвь изолированной
пример
источник
git clone --branch {branch-name} {repo-URI}
Пример:
git clone --branch dev https://github.com/ann/cleaningmachine.git
{branch-name}
{repo-URI}
источник
Может быть сделано в 2 шага
Клонировать хранилище
git clone <http url>
Оформите нужную ветку
git checkout $BranchName
источник