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?



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


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

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

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

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.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.