Як git клонувати певний тег


192

Від git-clone (1) Сторінка посібника

--branch також може взяти теги та від'єднати HEAD під час виконання комісії в отриманому сховищі.

я намагався

git clone --branch <tag_name> <repo_url>

Але це не працює. Він повертає:

warning: Remote branch 2.13.0 not found in upstream origin, using HEAD instead

Як користуватися цим параметром?



2
Ти маєш рацію, але різниці мало. Коли я задаю це питання, в моїй ситуації мені потрібно було це зробити в один рядок і потрібно використовувати clone, і я застряг у "чому - галузь не працює". Найкраща відповідь на використаний URL clone-> checkout, який не може вирішити моє питання. :)
Цзян Червень

Відповіді:


325
git clone --branch <tag_name> <repo_url>

Ця команда не підтримується в git 1.7.9.5.

Я використовую git 1.8.3.5, і він працює


92
FYI: Також уточнюйте, --depth 1щоб уникнути завантаження непоточних комісій.
Акумен

1
Відмінно працює в git 1.8.4.1
taco

Це не працює. Після клонування, якщо ви git tagце зробите, не відображається тег
Користувач без шапки

Зверніть увагу, якщо посилання неоднозначне, і у вас є гілка та тег з назвою того ж самого, це віддати перевагу гілці.
Кіт Смайлі

1
Що таке непоточне зобов’язання?
d512

74

Використовуйте --single-branchпараметр для клонування лише історії, що веде до кінця тегу . Це врятує багато зайвого коду від клонування.

git clone <repo_url> --branch <tag_name> --single-branch

3
Є --single-branchеквівалент --depth 1?
igracia

14
Ні, це не рівнозначно. --sele-гілка клонує історію для цілої гілки. З --depth 1 взагалі не клонується історія.
Мартін Крюнг

2
Також --single-branchмається на увазі при --depthвикористанні. З посібникаWhen creating a shallow clone with the --depth option, this is the default
koda

33
git clone -b 13.1rc1-Gotham  --depth 1  https://github.com/xbmc/xbmc.git
Cloning into 'xbmc'...
remote: Counting objects: 17977, done.
remote: Compressing objects: 100% (13473/13473), done.
Receiving objects:  36% (6554/17977), 19.21 MiB | 469 KiB/s    

Буде швидше, ніж:

git clone https://github.com/xbmc/xbmc.git
Cloning into 'xbmc'...
remote: Reusing existing pack: 281705, done.
remote: Counting objects: 533, done.
remote: Compressing objects: 100% (177/177), done.
Receiving objects:  14% (40643/282238), 55.46 MiB | 578 KiB/s

Або

git clone -b 13.1rc1-Gotham  https://github.com/xbmc/xbmc.git
Cloning into 'xbmc'...
remote: Reusing existing pack: 281705, done.
remote: Counting objects: 533, done.
remote: Compressing objects: 100% (177/177), done.
Receiving objects:  12% (34441/282238), 20.25 MiB | 461 KiB/s

6
--depth 1це дорогоцінний камінь, тому багато людей завантажують всю історію git лише для використання HEAD.
MGP

2
--depth 1слід зробити за замовчуванням; якщо хтось спробує виграти попередню комісію, їм буде запропоновано завантажити решту.
Jikku Jose Jose

3

Використовуйте команду

git clone --help

щоб побачити, чи підтримує ваш git команду

git clone --branch tag_name

Якщо ні, просто виконайте наступне:

git clone repo_url 
cd repo
git checkout tag_name

1

Клонування конкретного тегу може повернути стан "відокремленої HEAD" .

Для вирішення спробуйте спочатку клонувати репо, а потім перевірити певний тег. Наприклад:

repo_url=https://github.com/owner/project.git
repo_dir=$(basename $repo_url .git)
repo_tag=0.5

git clone --single-branch $repo_url # using --depth 1 can show no tags
git --work-tree=$repo_dir --git-dir=$repo_dir/.git checkout tags/$repo_tag

Примітка. Оскільки Git 1.8.5 , ви можете використовувати -C <path>замість --work-treeі --git-dir.

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