Как мне клонировать одну ветку в Git?
У меня есть локальный репозиторий Git под названием 'skeleton', который я использую для хранения скелетов проекта. Имеет несколько веток для разных видов проектов:
[email protected] [~/Projects/skeleton] git branch
* master
rails
c
c++
Если я хочу проверить основную ветку для нового проекта, я могу сделать
[email protected] [~/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.
Ответы
Ответ 1
Примечание: git1.7.10 (апрель 2012 г.) фактически позволяет клонировать только одну ветвь
# clone only the remote primary HEAD (default: origin/master)
git clone --single-branch
as in:
git clone <url> --branch <branch> --single-branch [<folder>]
Вы можете увидеть его в t5500-fetch-pack.sh
:
test_expect_success 'single branch clone' '
git clone --single-branch "file://$(pwd)/." singlebranch
'
Tobu комментарии, которые:
Это подразумевается при выполнении мелкого клонирования.
Это делает git clone --depth 1
самый простой способ сэкономить пропускную способность.
И поскольку Git 1.9.0 (февраль 2014), мелкие клоны поддерживают передачу данных (push/pull), так что опция еще более полезна сейчас.
См. Больше в разделе Является ли git clone --depth 1
(мелкий клон) более полезным, чем это делает?".
"Отменить" мелкий клон подробно описан в Преобразовать мелкий клоун в полный клон" (git 1.8.3 +)
# unshallow the current branch
git fetch --unshallow
# for getting back all the branches (see Peter Cordes' comment)
git config remote.origin.fetch refs/heads/*:refs/remotes/origin/*
git fetch --unshallow
Как Chris комментарии:
магическая линия для получения отсутствующих ветвей для обратного --single-branch
равна (git v2.1.4):
git config remote.origin.fetch +refs/heads/*:refs/remotes/origin/*
git fetch --unshallow
Ответ 2
Одним из способов является выполнение следующего.
git clone [email protected]:project_name.git -b branch_name /your/folder
Где branch_name
- это ветка по вашему выбору, а "/your/folder" - папка назначения для этой ветки. Это правда, что это принесет другие ветки, дающие вам возможность сливаться взад и вперед. Теперь, начиная с Git 1.7.10, теперь вы можете сделать это
git clone [email protected]:project_name.git -b branch_name --single-branch /your/folder
Ответ 3
Используя Git версии 1.7.3.1 (в Windows), вот что я делаю ($BRANCH
- это название ветки, которую я хочу $REMOTE_REPO
а $REMOTE_REPO
- это URL-адрес удаленного репозитория, из которого я хочу клонировать):
mkdir $BRANCH
cd $BRANCH
git init
git remote add -t $BRANCH -f origin $REMOTE_REPO
git checkout $BRANCH
Преимущество этого подхода заключается в том, что последующие вызовы git pull
(или git fetch
) также просто загружают запрошенную ветку.
Ответ 4
Вы можете попробовать долгий путь:
mkdir newrepo.git
cd newrepo.git
git init
git remote add origin file:///path/to/original
git fetch origin branchiwant:refs/remotes/origin/branchiwant
git checkout -b branchiwant --track origin/branchiwant
Что это делает:
- Создайте и запустите пустой Git-репозиторий.
- Добавляет исходный репозиторий в качестве удаленного источника.
- Выбирает только ту ветвь, которая вам требуется от удаленного источника.
- Создает и извлекает новую ветку, которая настроена на отслеживание только что клонированной исходной ветки.
Надеюсь, это будет что-то вроде того, что вы после.
Ответ 5
Вы можете сделать это, используя следующую команду:
git clone -b branch_name --single-branch project_url local_folder_to_clone_in
Ответ 6
Из справочной страницы git-clone:
--single-branch
ваш друг во время клонирования, не забудьте использовать с --branch <branch name>
или будет клонирован только удаленный первичный HEAD (master по умолчанию)
Всегда не забывайте делать Ctrl + F5 для чтения свежего источника, а не из кеша :-) (я так долго не знал об этой опции).
Ответ 7
git clone <url> --branch <branch> --single-branch
Просто введите URL и название ветки.
Ответ 8
Клонировать только одну ветку. Это самый простой способ:
$ git clone -b BRANCH_NAME --single-branch [email protected]:___/PROJECTNAME.git
Ответ 9
Для клонирования ветки Git, к которой у вас нет открытого ключа, используйте это:
git clone -b <branch> <Git repository URL or clone URL you get from Git repository>
Ответ 10
Для клонирования конкретной ветки вы можете сделать:
git clone --branch yourBranchName [email protected]
Ответ 11
После завершения клонирования мне пришлось ввести git submodule update --init --recursive
, чтобы загрузить все подмодули
Ответ 12
Может быть сделано за 2 шага
-
Клонировать хранилище
-
Оформить требуемую ветку
Ответ 13
Откройте cmd.
cd folder_name
(введите путь клонирования ветки)
Всего одна команда:
git clone url_of_projecturltoclone -b branch_name
Ответ 14
git clone <url> --branch <branch> --single-branch
Просто введите URL и название ветки
Ответ 15
Хорошо, спасибо за информацию
способ помочь - это хорошо, мы ценим ваши усилия
Ответ 16
Немного поздно, но я хотел добавить решение, которое использовал для решения этой проблемы. Я нашел решение здесь.
Во всяком случае, кажется, что возникает вопрос: "Как начать новый проект из ветки другого репо?"
Для этого я решил создать новое репо в github или где-либо еще. Это послужит репо вашему новому проекту.
На локальном компьютере перейдите к проекту, в котором есть ветвь, которую вы хотите использовать в качестве шаблона для вашего нового проекта.
Запустите команду:
git push https://github.com/accountname/new-repo.git +old_branch:master
Что это сделает, это переместит old_branch в new-repo и сделает его главной веткой нового репо.
Затем вам просто нужно клонировать новый репозиторий в локальный каталог вашего нового проекта, и у вас есть новый проект, запущенный в старой ветке.
Ответ 17
- Откройте оболочку Git Bash.
- Создайте каталог в вашей файловой системе, где вы хотите оформить заказ.
- $ mkdir Feature_develop_branch
- Перейдите в папку Feature_develop_branch.
- $ cd Feature_develop_branch
- Клонируйте репозиторий, используя внешний URL-адрес клонирования.
- После клонирования измените каталог на созданное имя репозитория.
- Проверьте ветку.
- $ git checkout
<Branch Name>