Отримайте конкретну гілку за допомогою git


19

Я хочу завантажити вихідний код з наступної гілки master за допомогою git, як описано у вікі Xilinx .

Я спробував це:

#git clone git://github.com/Xilinx/u-boot-xlnx/tree/master-next.git

Initialized empty Git repository in /home/Hannan/master-next/.git/
fatal: remote error:
Xilinx/u-boot-xlnx/tree/master-next is not a valid repository name
Email support@github.com for help

Навіть цього не вдалося:

# git clone git://github.com/Xilinx/tree/master-next/u-boot-xlnx.git
Initialized empty Git repository in /home/Hannan/u-boot-xlnx/.git/
fatal: remote error:
Xilinx/tree/master-next/u-boot-xlnx is not a valid repository name
Email support@github.com for help

Команда, яка працює:

 git clone git://github.com/Xilinx/u-boot-xlnx.git

Але як я знаю, що це дійсно отримає наступну гілку, а не головну гілку ? Як правильно отримати конкретну гілку за допомогою git?

Я використовую RHEL 6, доступ до якого здійснюється через PuTTY.

Відповіді:


16

Як повідомляє повідомлення про помилку, git cloneочікує сховище git. Ви не можете "додати" назву гілки у такий шлях. Дивіться гілки в git .

Ви можете клонувати одну гілку (і це історія): git clone <url> --branch <branch> --single-branch

Див git help clone.

Але команда клонування, яку ви виконували, дала вам копію всього сховища, ви можете побачити наявні гілки з git branchта більше деталей про них git show-branch.

Перейдіть до потрібної гілки git checkout branch-name.

Перші глави книги Pro Git (доступні в Інтернеті) дають більш детальну інформацію про основні команди.


"команда клонування, яку ви запустили, дала вам копію всього сховища". яке сховище означає, що обидві гілки об'єднані?
користувач2799508

Ні, вони не злиті. Гілка в git - це не копія всього каталогу, як пояснено тут .
Леяз

Що я зробив так: "git clone -b master-next github.com/Xilinx/u-boot-xlnx.git " це неправильно?
користувач2799508

Вам більше не потрібен клон. Команда, яку ви показали у своєму запитанні, дала вам сховище з усіма гілками. Але це теж правильно. Це еквівалентно робити git checkout master-nextпісля клонування.
Леяз

13

Ця команда повинна працювати:

$ git fetch origin [branch]

Наведена вище команда лише витягує метадані з віддаленого сховища, вона не виконує об'єднання джерел.

Якщо ви хочете отримати та об'єднати джерела, командою буде:

$ git pull origin [branch]

Будьте обережні з гілкою, де виконуєте команду злиття. Тут будуть зливатися джерела.


Ваша відповідь технічно правильна, але я думаю, що це може отримати користь від граматичної перевірки / переписування.
Самі Лайн

це прекрасно працює thx
nwgat

4

репозиторії git містять усі гілки (але стиснуті і, отже, рідко проблема з розміром).

Тому ви можете клонувати весь проект так, як ви успішно зробили. Це стандартний спосіб отримати сховище, навіть якщо вас цікавить лише одна гілка.

Структура .git буде включати всі гілки, зроблені в цьому сховищі.

Використання конкретної гілки зробіть git checkout [branch_name] Якщо гілка існує, файли будуть доступні локально (як раз, поточні файли в каталогах проектів).

git status потім покаже, яка галузь є поточною гілкою, наприклад:

За словами Леяза, можна клонувати конкретну галузь. На практиці я ніколи цього не робив і не бачив, як це використовують інші. У подальшому дослідженні я бачу, що це відносно нове, додане в git 1.7.10 (квітень 2012 р.): Опція 'git clone learn --single-branch' для обмеження клонування однією гілкою (сюрприз!); теги, які не вказують на історію гілки, не вибираються. Наприклад:

git clone -b master-next --single-branch git://github.com/Xilinx/

введіть тут опис зображення Ось, для мого додатка "linker" я перевіряю відділення v3.0.10


1
Я ніколи цього не робив, я пам’ятав, що бачив варіант. Я думаю, що його рідко використовують, оскільки додаткові гілки мають "дешеві" розміри.
Leiaz
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.