Belirli bir etiketi klonlamak için git


192

Gönderen git-klonu (1) Elle Sayfa

--branch ayrıca etiket alabilir ve HEAD'ı sonuçtaki depoda bu taahhütte ayırabilir.

denedim

git clone --branch <tag_name> <repo_url>

Ama bu çalışmıyor. Döndürür:

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

Bu parametre nasıl kullanılır?



2
Haklısın, ama küçük fark. Bu soruyu sorduğumda, benim durumumda, bunu tek bir satırda yapmam gerekiyordu ve kullanmalıydım cloneve 'neden --branch işe yaramadı'. Bu URL'nin en iyi yanıtı clone-> checkout, sorumu çözemedi. :)
— Jiang Haziran

Yanıtlar:


328
git clone --depth 1 --branch <tag_name> <repo_url>

--depth 1 isteğe bağlıdır, ancak yalnızca bir revizyonda duruma ihtiyacınız varsa, muhtemelen tüm revizyona kadar tüm geçmişi indirmeyi atlamak istersiniz.


92
Bilginize: --depth 1Geçerli olmayan taahhütlerin indirilmesini önlemek için de belirtiniz .
— Acumenus

1
Git 1.8.4.1
— taco

Bu işe yaramıyor. Sonra klon yaparsanız git taghiçbir etiket gösterir
— şapka ile kullanıcı

Ref belirsizse ve bir dal ve aynı adı taşıyan bir etiketiniz varsa, bunun da dalı tercih edeceğini unutmayın.
— Keith Smiley

1
Mevcut olmayan taahhüt nedir?
— d512

74

Yalnızca etiketin ucuna giden geçmişi klonlamak--single-branch için bu seçeneği kullanın . Bu, gereksiz kodların çoğaltılmasını önler.

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

3
Mı --single-branchdenk --depth 1?
— Igracia

14
Hayır, eşdeğer değil. - tek dal tüm dalın tarihini klonlar. --Depth 1 ile hiçbir tarih klonlanmaz.
— Martin Krung

2
Ayrıca kullanıldığında --single-branchda ima edilir --depth. KılavuzdanWhen 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    

Şundan daha hızlı olacak:

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

Veya

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 1bir mücevher, birçok kişi sadece kullanmak için bütün git geçmişini indirin HEAD.
— MGP

2
--depth 1varsayılan yapılmalı; Birisi önceki bir taahhüdü kesmeye çalışırsa, geri kalanını indirmesi istenir.
— Jikku Jose

3

Komutu kullanın

git clone --help

Git'in komutu destekleyip desteklemediğini görmek için

git clone --branch tag_name

Değilse, aşağıdakileri yapmanız yeterlidir:

git clone repo_url 
cd repo
git checkout tag_name

1

Belirli bir etiketi kopyalamak, 'ayrılmış HEAD' durumunu döndürebilir .

Geçici bir çözüm olarak, önce repoyu klonlamaya çalışın ve ardından belirli bir etiketi kullanıma alın. Örneğin:

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

Not: Git 1.8.5'ten beri ve -C <path>yerine kullanabilirsiniz .--work-tree--git-dir

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.