Cara git mengkloning tag tertentu

192

Dari git-clone (1) Halaman Manual

--branch juga dapat mengambil tag dan melepaskan HEAD pada komit di repositori yang dihasilkan.

Saya mencoba

git clone --branch <tag_name> <repo_url>

Tapi itu tidak berhasil. Ia mengembalikan:

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

Bagaimana cara menggunakan parameter ini?

Jiang Jun
sumber
kemungkinan rangkap dari Unduh tag tertentu dengan Git
Victor Sergienko
2
Anda benar, tetapi sedikit perbedaan. Ketika saya mengajukan pertanyaan ini, dalam situasi saya, saya perlu melakukan ini dalam satu baris dan harus digunakan clone, dan saya terjebak pada 'mengapa - cabang tidak bekerja'. Jawaban terbaik dari url yang digunakan clone-> checkout, yang tidak dapat menyelesaikan pertanyaan saya. :)
Jiang Jun

Jawaban:

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

Perintah ini tidak didukung di git 1.7.9.5.

Saya menggunakan git 1.8.3.5 dan berhasil

Erik Saunier
sumber
92
FYI: Tentukan juga --depth 1untuk menghindari pengunduhan komitmen tidak lancar.
Acumenus
1
Bekerja dengan baik di git 1.8.4.1
taco
Ini tidak berhasil. Setelah mengkloning jika Anda melakukannya git tag, tidak ada tag
Pengguna tanpa topi
Perhatikan jika refnya ambigu dan Anda memiliki cabang dan tag dengan nama yang sama, ini akan memilih cabang.
Keith Smiley
1
Apa itu komitmen tidak lancar?
d512
74

Gunakan --single-branchopsi untuk hanya mengkloning riwayat yang mengarah ke ujung tag . Ini menghemat banyak kode yang tidak perlu dari kloning.

git clone <repo_url> --branch <tag_name> --single-branch
Sahil kalra
sumber
3
Apakah --single-branchsetara dengan --depth 1?
igracia
14
Tidak, ini tidak setara. --single-branch mengkloning sejarah untuk seluruh cabang. Dengan --depth 1 tidak ada riwayat sama sekali yang dikloning.
Martin Krung
2
Juga --single-branchtersirat saat --depthdigunakan. Dari manualWhen 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    

Akan lebih cepat dari:

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

Atau

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
RzR
sumber
6
--depth 1adalah permata, begitu banyak orang mengunduh seluruh sejarah git hanya untuk menggunakan HEAD.
MGP
2
--depth 1harus dibuat default; jika seseorang mencoba membatalkan komit sebelumnya, mereka harus diminta untuk mengunduh sisanya.
Jikku Jose
3

Gunakan perintah

git clone --help

untuk melihat apakah git Anda mendukung perintah

git clone --branch tag_name

Jika tidak, lakukan saja hal berikut:

git clone repo_url 
cd repo
git checkout tag_name
mathsyouth
sumber
1

Mengkloning tag tertentu, dapat mengembalikan status 'terlepas KEPALA' .

Sebagai solusinya, cobalah untuk mengkloning repo terlebih dahulu, dan kemudian checkout tag tertentu. Sebagai contoh:

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

Catatan: Karena Git 1.8.5 , Anda dapat menggunakan -C <path>, alih-alih --work-treedan --git-dir.

Noam Manos
sumber