วิธีคอมไพล์แท็กเฉพาะ


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

วิธีใช้พารามิเตอร์นี้


อาจเป็นไปได้ซ้ำกับการดาวน์โหลดแท็กเฉพาะด้วย Git
Victor Sergienko

2
คุณพูดถูก แต่แตกต่างกันเล็กน้อย เมื่อฉันถามคำถามนี้ในสถานการณ์ของฉันฉันต้องทำสิ่งนี้ในบรรทัดเดียวและต้องใช้cloneและฉันติดอยู่ที่ 'ทำไม - แบรนช์ใช้งานไม่ได้' คำตอบที่ดีที่สุดของ URL นั้นใช้clone-> checkoutซึ่งไม่สามารถแก้ไขคำถามของฉัน :)
Jiang Jun

คำตอบ:


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

คำสั่งนี้ไม่ได้รับการสนับสนุนใน git 1.7.9.5

ฉันใช้ git 1.8.3.5 และใช้งานได้


92
FYI: ระบุด้วย--depth 1เพื่อหลีกเลี่ยงการดาวน์โหลดข้อผูกพันที่ไม่เป็นปัจจุบัน
คิวเมนตัส

1
ทำงานได้ดีในคอมไพล์ 1.8.4.1
ทาโก้

มันใช้งานไม่ได้ หลังจากโคลนนิ่งหากคุณไม่git tagแสดงแท็ก
ผู้ใช้ที่ไม่มีหมวก

หมายเหตุถ้าอ้างอิงไม่ชัดเจนและคุณมีสาขาและแท็กชื่อเดียวกันสิ่งนี้จะชอบสาขา
Keith Smiley

1
การกระทำที่ไม่เป็นปัจจุบันคืออะไร?
d512

74

ใช้--single-branchตัวเลือกในประวัติศาสตร์เพียงโคลนที่นำไปสู่ปลายของแท็ก นี่เป็นการบันทึกรหัสที่ไม่จำเป็นจำนวนมากจากการถูกโคลน

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

3
คือ--single-branchเทียบเท่ากับ--depth 1?
igracia

14
ไม่มันไม่เทียบเท่า - สาขาเดียวโคลนประวัติศาสตร์สำหรับทั้งสาขา ด้วย - ส่วนที่ 1 ไม่มีการโคลนประวัติเลย
Martin Krung

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 1HEADเป็นอัญมณีที่ผู้คนจำนวนมากดาวน์โหลดประวัติศาสตร์คอมไพล์ทั้งหมดเพียงเพื่อใช้
MGP

2
--depth 1ควรจะเริ่มต้น; หากมีคนพยายามที่จะตรวจสอบการกระทำก่อนหน้าพวกเขาควรได้รับแจ้งให้ดาวน์โหลดที่เหลือ
Jikku Jose

3

ใช้คำสั่ง

git clone --help

เพื่อดูว่าคอมไพล์ของคุณรองรับคำสั่งหรือไม่

git clone --branch tag_name

ถ้าไม่ทำเพียงทำต่อไปนี้:

git clone repo_url 
cd repo
git checkout tag_name

1

โคลนแท็กที่เฉพาะเจาะจงอาจกลับ'แฝดหัว' รัฐ

วิธีแก้ปัญหาลองโคลน repo ก่อนแล้วเช็คเอาต์แท็กเฉพาะ ตัวอย่างเช่น:

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.