ดึงสาขาเฉพาะโดยใช้คอมไพล์


19

ฉันต้องการที่จะดาวน์โหลดรหัสที่มาจากสาขาต้นแบบต่อไปโดยใช้คอมไพล์ที่อธิบายไว้ในวิกิพีเดีย Xilinx

ฉันลองสิ่งนี้:

#git clone git://github.com/Xilinx/u-boot-xlnx/tree/master-next.git

Initialized empty Git repository in /home/Hannan/master-next/.git/
fatal: remote error:
Xilinx/u-boot-xlnx/tree/master-next is not a valid repository name
Email support@github.com for help

แม้สิ่งนี้จะล้มเหลว

# git clone git://github.com/Xilinx/tree/master-next/u-boot-xlnx.git
Initialized empty Git repository in /home/Hannan/u-boot-xlnx/.git/
fatal: remote error:
Xilinx/tree/master-next/u-boot-xlnx is not a valid repository name
Email support@github.com for help

คำสั่งที่ใช้งานได้:

 git clone git://github.com/Xilinx/u-boot-xlnx.git

แต่ฉันจะรู้ได้อย่างไรว่าสิ่งนี้จะดึงสาขาต่อไปหลักไม่ใช่สาขาหลัก ? ฉันจะดึงสาขาเฉพาะอย่างถูกต้องโดยใช้ git ได้อย่างไร

ฉันใช้ RHEL 6 เข้าถึงได้ผ่าน PuTTY

คำตอบ:


16

เช่นเดียวกับข้อความแสดงข้อผิดพลาดบอกคุณgit cloneคาดว่าที่เก็บ git คุณไม่สามารถ "เพิ่ม" ชื่อสาขาในเส้นทางแบบนั้นได้ ดูสาขาในคอมไพล์

คุณสามารถโคลนสาขาเดียว (และเป็นประวัติ): git clone <url> --branch <branch> --single-branch

git help cloneดู

แต่คำสั่งโคลนที่คุณวิ่งให้คุณสำเนาของพื้นที่เก็บข้อมูลทั้งหมดที่คุณสามารถดูสาขาที่มีอยู่ด้วยและรายละเอียดเพิ่มเติมเกี่ยวกับพวกเขาด้วยgit branchgit show-branch

git checkout branch-nameสลับไปยังสาขาที่คุณต้องการด้วย

บทแรกของหนังสือPro Git (ออนไลน์) ให้รายละเอียดเพิ่มเติมเกี่ยวกับคำสั่งพื้นฐาน


"คำสั่ง clone ที่คุณรันให้สำเนาของพื้นที่เก็บข้อมูลทั้งหมด". พื้นที่เก็บข้อมูลทั้งหมดหมายความว่าทั้งสองสาขาผสานหรือไม่
2799508

ไม่พวกเขาจะไม่ถูกผสาน สาขาในคอมไพล์ไม่ได้เป็นสำเนาของไดเรกทอรีทั้งหมดเป็นอธิบายที่นี่
Leiaz

สิ่งที่ฉันทำคือ: "git clone -b master-next github.com/Xilinx/u-boot-xlnx.git " สิ่งนี้ไม่ถูกต้อง?
2799508

คุณไม่ต้องการโคลนอีกต่อไป คำสั่งที่คุณแสดงในคำถามของคุณให้ที่เก็บที่มีสาขาทั้งหมด แต่นี่ก็ถูกต้องเช่นกัน มันเทียบเท่ากับการทำgit checkout master-nextหลังจากการโคลนนิ่ง
Leiaz

13

คำสั่งนี้จะทำงาน:

$ git fetch origin [branch]

คำสั่งดังกล่าวเรียกเฉพาะข้อมูลเมตาจากที่เก็บระยะไกลมันไม่รวมแหล่งที่มา

หากคุณต้องการดึงข้อมูลและรวมแหล่งที่มาคำสั่งจะเป็น:

$ git pull origin [branch]

ระมัดระวังกับสาขาที่คุณกำลังดำเนินการคำสั่งผสาน มันจะเป็นที่รวมแหล่งที่มา


คำตอบของคุณถูกต้องทางเทคนิค แต่ฉันคิดว่ามันอาจได้ประโยชน์จากการตรวจสอบทางไวยากรณ์ / การเขียนใหม่
Sami Laine

มันใช้งานได้ดีมาก
nwgat

4

ที่เก็บ git มีสาขาทั้งหมด (แต่ถูกบีบอัดและมีความแตกต่างกันเท่านั้น

ดังนั้นคุณสามารถโคลนโครงการทั้งหมดตามที่คุณทำสำเร็จ นี่เป็นวิธีมาตรฐานในการรับที่เก็บแม้ว่าคุณจะสนใจเพียงสาขาเดียว

โครงสร้าง. git จะรวมสาขาทั้งหมดที่ทำบนที่เก็บนั้น

หากต้องการใช้สาขาที่เฉพาะเจาะจงgit checkout [branch_name] หากสาขานั้นมีอยู่ไฟล์จะถูกทำให้พร้อมใช้งานในเครื่อง (เช่นเดียวกับไฟล์ปัจจุบันในไดเรกทอรีโครงการ)

git status จะแสดงว่าสาขาใดเป็นสาขาปัจจุบันตัวอย่างเช่น

ตามที่ Leiaz หนึ่งสามารถโคลนสาขาที่เฉพาะเจาะจง ในทางปฏิบัติฉันไม่เคยทำสิ่งนี้หรือเห็นคนอื่นใช้ ในการวิจัยเพิ่มเติมฉันเห็นว่ามันค่อนข้างใหม่เพิ่มใน git 1.7.10 (เมษายน 2012): ตัวเลือก 'git clone เรียนรู้ - สาขาเดียว' เพื่อ จำกัด การโคลนไปยังสาขาเดียว (แปลกใจ!); แท็กที่ไม่ได้ชี้ไปที่ประวัติของสาขาจะไม่ถูกดึงออกมา ตัวอย่างเช่น:

git clone -b master-next --single-branch git://github.com/Xilinx/

ป้อนคำอธิบายรูปภาพที่นี่ ที่นี่สำหรับแอปพลิเคชัน "ตัวลิงก์" ของฉันฉันกำลังตรวจสอบสาขา v3.0.10


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