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.