Git Clone Branch - วิธีการโคลนสาขาเฉพาะ

ซึ่งแตกต่างจากระบบควบคุมแบบรวมศูนย์รุ่นเก่าเช่น SVN และ CVS Git จะกระจาย นักพัฒนาซอฟต์แวร์ทุกคนมีประวัติและการควบคุมโค้ดในเครื่องหรือจากระยะไกล นอกจากนี้ยังสามารถเข้าถึงหรือจัดการโค้ดหลายส่วนตามที่เห็นว่าเหมาะสมจากสถานที่ต่างๆ

นับตั้งแต่ Linus Torvalds (ผู้สร้างเคอร์เนลระบบปฏิบัติการลินุกซ์ที่มีชื่อเสียง) ได้สร้าง Git ในปี 2548 สำหรับการพัฒนาเคอร์เนลของลินุกซ์จึงกลายเป็นระบบควบคุมเวอร์ชันสมัยใหม่ที่ใช้กันอย่างแพร่หลาย

ในบทความนี้ฉันจะแนะนำคุณเกี่ยวกับเวิร์กโฟลว์สาขา Git clone และ Git และฉันจะแสดงให้คุณเห็นว่าคุณสามารถโคลนสาขาเฉพาะตามความต้องการของคุณได้อย่างไร เอาล่ะ! เหรอ?

ข้อกำหนดเบื้องต้น

  • ความรู้พื้นฐานของเครื่องปลายทาง
  • ความสามารถในการพิมพ์คำสั่งในเทอร์มินัล
  • ติดตั้ง Git แล้ว (ฉันจะยังคงแสดงวิธีการ)
  • บัญชี GitHub
  • รอยยิ้มบนใบหน้าของคุณ (ทำให้เพื่อนยิ้ม?)

ข้อมูลเบื้องต้นเกี่ยวกับ Git และ GitHub

อ้างอิงจาก Wikipedia

Gitคือระบบควบคุมเวอร์ชันแจกจ่ายที่ออกแบบมาเพื่อติดตามการเปลี่ยนแปลงของโครงการ (รหัส) ในการพัฒนาซอฟต์แวร์ มีวัตถุประสงค์เพื่อบังคับใช้การประสานงานการทำงานร่วมกันความเร็วและประสิทธิภาพในหมู่นักพัฒนา

ในทางกลับกันGitHubเป็นบริการโฮสติ้งบนเว็บสำหรับการควบคุมเวอร์ชันโดยใช้ Git มีฟังก์ชันการควบคุมเวอร์ชันกระจายและการจัดการซอร์สโค้ดทั้งหมดของ Git รวมทั้งเพิ่มคุณสมบัติเพิ่มเติมสำหรับโค้ดคอมพิวเตอร์

วิธีติดตั้ง Git บน Windows

ดาวน์โหลดและติดตั้ง Git สำหรับ Windows Installer ล่าสุดที่นี่

วิธีติดตั้ง Git บน Linux

นี่คือคำสั่งที่อิงจาก Linux distro ของคุณ:

Debian หรือ Ubuntu

sudo apt-get update sudo apt-get install git

Fedora

sudo dnf install git

CentOS

sudo yum install git

Arch Linux

sudo pacman -Sy git

Gentoo

sudo emerge --ask --verbose dev-vcs/git

วิธีติดตั้ง Git บนเครื่อง Mac

ดาวน์โหลดและติดตั้งโปรแกรมติดตั้ง Git for Mac ล่าสุดที่นี่

หรือคุณสามารถพิมพ์คำสั่งนี้:

brew install git

ตอนนี้เราได้ติดตั้ง Git แล้วเรามาดูบทช่วยสอนกัน

รู้เบื้องต้นเกี่ยวกับ Git Clone

Git ช่วยให้คุณจัดการและกำหนดเวอร์ชันโครงการของคุณใน "ที่เก็บ" ที่เก็บนี้ถูกจัดเก็บไว้ในบริการโฮสต์บนเว็บสำหรับการควบคุมเวอร์ชันเช่น GitHub

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

ตัวอย่างเช่นคุณสามารถโคลนที่เก็บของ freeCodeCamp ด้วย SSH ดังนี้:

git clone [email protected]:freeCodeCamp/freeCodeCamp.git

ข้อมูลเบื้องต้นเกี่ยวกับสาขา Git

เมื่อทำงานในโครงการคุณอาจมีคุณสมบัติที่แตกต่างกัน และผู้ร่วมให้ข้อมูลหลายคนจะทำงานในโครงการนี้และคุณลักษณะต่างๆ

สาขาช่วยให้คุณสร้าง "สนามเด็กเล่น" ที่มีไฟล์เดียวกันในmasterสาขาได้ คุณสามารถใช้สาขานี้เพื่อสร้างฟีเจอร์อิสระทดสอบฟีเจอร์ใหม่ทำการเปลี่ยนแปลงแก้ไขสร้างแก้ไขเขียนเอกสารหรือลองใช้แนวคิดโดยไม่ทำลายหรือส่งผลกระทบต่อโค้ดการผลิต เมื่อคุณทำเสร็จแล้วคุณจะรวมสาขาเข้ากับmasterสาขาการผลิต

การแยกสาขาเป็นแนวคิดหลักใน Git ซึ่งใช้ใน GitHub เพื่อจัดการเวิร์กโฟลว์ของโครงการหนึ่งเวอร์ชันต่างๆ masterสาขาอยู่เสมอสาขาเริ่มต้นในพื้นที่เก็บข้อมูลที่ส่วนใหญ่มักจะคิดว่า "การผลิตและรหัส deployable" สาขาใหม่เช่นpasswordless-authหรือrefactor-signup-uxสามารถสร้างจากmasterสาขา

วิธีการโคลนสาขา Git

ในขณะที่คุณสามารถโคลนที่เก็บกับคำสั่งเก็บไว้ในใจว่าโคลนนี้สาขาและระยะไกลgit clone โดยHEADปกติจะเป็นmasterค่าเริ่มต้นและรวมถึงสาขาอื่น ๆ ทั้งหมดในที่เก็บ

ดังนั้นเมื่อคุณโคลนที่เก็บคุณจะโคลนmasterและสาขาอื่น ๆ ทั้งหมด ซึ่งหมายความว่าคุณจะต้องชำระเงินสาขาอื่นด้วยตัวเอง

สมมติว่างานของคุณในโปรเจ็กต์คือการทำงานกับฟีเจอร์เพื่อเพิ่มการพิสูจน์ตัวตนแบบไม่ใช้รหัสผ่านไปยังแดชบอร์ดผู้ใช้ และคุณสมบัตินี้อยู่ในpasswordless-authสาขา

คุณไม่ต้องการmasterสาขาจริงๆเนื่องจาก "สาขาคุณลักษณะ" ของคุณจะถูกรวมเข้าในmasterภายหลัง แล้วคุณจะโคลนpasswordless-authสาขานี้โดยไม่ดึงข้อมูลสาขาอื่นทั้งหมดด้วย "ไฟล์จำนวนมากที่คุณไม่ต้องการ" ได้อย่างไร

ฉันสร้างที่เก็บตัวอย่างนี้เพื่ออธิบายสิ่งนี้ ที่เก็บนี้มีบล็อกง่ายๆที่สร้างด้วย Nextjs และมีสาขาจำลองสี่สาขา:

  • ปรมาจารย์
  • dev
  • จัดฉาก
  • ไม่ใช้รหัสผ่าน - รับรองความถูกต้อง

ใน Nextjs ไฟล์ใด ๆ ภายในโฟลเดอร์pages/apiจะถูกแมปกับ/api/*พา ธ และจะถือว่าเป็นปลายทาง API แทนไฟล์page. ในที่เก็บของเราฉันได้สร้าง Dummy API ที่แตกต่างกันในไดเร็กทอรีนี้เพื่อให้แต่ละสาขาแตกต่างกัน

masterสาขาถือแฟ้มหน้า / API / hello.jsในขณะที่passwordless-authถือแฟ้มหน้า / API / auth.js แต่ละไฟล์จะส่งคืนการตอบกลับข้อความจำลอง ดูmasterคำตอบของ API สวัสดีที่นี่ (พร้อมข้อความพิเศษสำหรับคุณ?)

มาโคลนที่เก็บ:

git clone [email protected]:BolajiAyodeji/nextjs-blog.git

สิ่งนี้ช่วยให้เราสามารถเข้าถึงสาขาทั้งหมดในที่เก็บนี้และคุณสามารถสลับระหว่างแต่ละสาขาเพื่อดูแต่ละเวอร์ชันและไฟล์ได้อย่างง่ายดาย

git branch -a

สงสัยว่ารีโมท / ที่มา / ..กิ่งไม้มาจากไหน?

เมื่อคุณโคลนพื้นที่เก็บข้อมูลที่คุณดึงข้อมูลจากพื้นที่เก็บข้อมูลบนอินเทอร์เน็ตหรือเซิร์ฟเวอร์ภายในที่รู้จักในฐานะที่ระยะไกล ต้นกำเนิดของคำเป็นนามแฝงที่สร้างโดย Git ของคุณเพื่อแทนที่ URL ระยะไกล (คุณสามารถเปลี่ยนหรือระบุนามแฝงอื่นได้หากต้องการ)

รีโมท / จุดเริ่มต้น / ..กิ่งก้านเหล่านี้จะชี้ให้คุณกลับไปที่ที่เก็บต้นทางที่คุณโคลนจากอินเทอร์เน็ตเพื่อให้คุณยังคงสามารถดึง / ดันจากจุดเริ่มต้นได้

ดังนั้นเมื่อคุณโคลนmasterลงในเครื่องของคุณremotes/origin/masterเป็นmasterสาขาดั้งเดิมบนอินเทอร์เน็ตและmasterอยู่ในเครื่องของคุณ ดังนั้นคุณจะดึง / ดันจากและไปที่remotes/origin/master.

โดยสรุปRemoteคือ URL ที่นำคุณไปยังที่เก็บบนอินเทอร์เน็ตในขณะที่Originเป็นนามแฝงสำหรับ URL ระยะไกลนี้

วิธีการโคลนสาขาเฉพาะ

ตอนนี้เรามาโคลนสาขาเฉพาะจากที่เก็บตัวอย่างของเรา มีสองวิธีในการโคลนสาขาเฉพาะ คุณสามารถ:

  • โคลนที่เก็บดึงข้อมูลสาขาทั้งหมดและชำระเงินไปยังสาขาที่ระบุทันที
  • โคลนที่เก็บและดึงเฉพาะสาขาเดียว

ทางเลือกที่หนึ่ง

git clone --branch  

หรือ

git clone -b  

ด้วยวิธีนี้คุณสามารถดึงข้อมูลสาขาทั้งหมดในพื้นที่เก็บข้อมูลเช็คเอาท์เพื่อคนที่คุณระบุและสาขาที่เฉพาะเจาะจงจะกลายเป็นที่กำหนดค่าสาขาในท้องถิ่นและgit push git pullแต่คุณยังคงดึงไฟล์ทั้งหมดจากแต่ละสาขา นี่อาจไม่ใช่สิ่งที่คุณต้องการใช่ไหม เหรอ?

มาทดสอบกัน:

 git clone -b passwordless-auth [email protected]:BolajiAyodeji/nextjs-blog.git

การดำเนินการนี้จะกำหนดค่าโดยอัตโนมัติpasswordless-authเป็นสาขาในพื้นที่ แต่ยังติดตามสาขาอื่น ๆ

ทางเลือกที่สอง

git clone --branch  --single-branch 

หรือ

git clone -b  --single-branch 

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

มาทดสอบกัน:

git clone -b passwordless-auth --single-branch [email protected]:BolajiAyodeji/nextjs-blog.git

การดำเนินการนี้จะกำหนดค่าโดยอัตโนมัติpasswordless-authเป็นสาขาในพื้นที่และติดตามสาขานี้เท่านั้น

หากคุณเรียกใช้cd pages/apiคุณจะพบauth.jsไฟล์ในpasswordless-authสาขาตามที่คาดไว้จากการตั้งค่าก่อนหน้านี้

สรุป

คุณอาจใช้อินเทอร์เน็ตหรือพื้นที่จัดเก็บข้อมูลหมด แต่ต้องทำงานในสาขาเฉพาะ หรือคุณอาจต้องการโคลนสาขาเฉพาะที่มีไฟล์ จำกัด ด้วยเหตุผลหลายประการ โชคดีที่ Git ช่วยให้คุณทำสิ่งนี้ได้อย่างยืดหยุ่น เกร็งกล้ามเนื้อแล้วลองใช้ "Git" อีกมากมายให้เรียนรู้

ทีละครั้งใช่ไหม ✌?