สาขาหัวข้อคอมไพล์คืออะไร?


142

สาขาหัวข้อคอมไพล์คืออะไร? แตกต่างจากสาขาธรรมดาไม่ทางใดก็ทางหนึ่ง? มีสาขาไหนบ้างที่ไม่ใช่สาขาหัวข้อ?

คำตอบ:


117

สาขากระทู้เป็นกิ่งมักจะมีน้ำหนักเบาที่คุณสร้างในประเทศและที่มีชื่อที่มีความหมายสำหรับคุณ ซึ่งเป็นที่ที่คุณอาจทำงานเพื่อแก้ไขข้อบกพร่องหรือคุณลักษณะ (เรียกอีกอย่างว่าสาขาคุณลักษณะ) ซึ่งคาดว่าจะใช้เวลาดำเนินการสักครู่

สาขาประเภทอื่นคือ "remote branch" หรือ "remote-tracking branch" สาขาประเภทนี้เป็นไปตามการพัฒนางานของคนอื่นและถูกเก็บไว้ในที่เก็บของคุณเอง คุณอัปเดตสาขานี้เป็นระยะ (โดยใช้git fetch) เพื่อติดตามสิ่งที่เกิดขึ้นที่อื่น เมื่อคุณพร้อมที่จะติดตามการเปลี่ยนแปลงของคนอื่นคุณจะใช้git pullทั้งการดึงและรวม

ฉันยังได้เห็นสาขาอีกประเภทหนึ่งซึ่งโดยพื้นฐานแล้วเป็นโครงสร้างไฟล์ที่แยกจากกันโดยสิ้นเชิงในที่เก็บเดียวกัน ตัวอย่างเช่นที่เก็บ Gitมีหัวที่ชื่อmanและhtmlที่มีเนื้อหาที่แตกต่างกันอย่างสิ้นเชิงจากสาขาหลัก ไม่รู้ว่ากิ่งไม้ประเภทนี้มักเรียกว่าอะไร


6
ฉันกำลังมองหาวิธีที่จะมีสองสาขาโดยไม่มีบรรพบุรุษร่วมกันและพบสิ่งนี้: madduck.net/blog/…
Nicolas

1
เขียนต้นไม้แยกฉันเชื่อว่าบางครั้งเรียกว่าสาขาเด็กกำพร้าคล้ายกับที่ Github แนะนำให้คุณสร้างหน้า github ด้วยตนเอง
สูงสุด

1
ทำไมคุณถึงบอกว่าสาขาของหัวข้อต้องเป็นของท้องถิ่น? ไม่มีเหตุผลที่จะคิดว่าคุณอาจไม่ต้องการผลักดันสาขาหัวข้อ และในทำนองเดียวกันนักพัฒนารายอื่นอาจสร้างสาขาหัวข้อของตนเองและคุณแทบไม่อยากดึงมันออกมา คำตอบนี้ดูเหมือนจะสร้างความสับสนให้กับคุณสมบัติสองอย่างที่ไม่เกี่ยวข้องกันโดยสิ้นเชิงของสาขา: สาขานั้นเป็นสาขาในพื้นที่หรือไม่ไม่เกี่ยวข้องเลยกับว่าเป็นสาขาหัวข้อหรือไม่
Jean-Paul Calderone

@ Jean-PaulCalderone: ฉันไม่คิดว่าฉันจะบอกว่าสาขาหัวข้อต้องเป็นสาขาในท้องถิ่น คุณสามารถติดตามสาขาหัวข้อจากระยะไกลได้หากมีนักพัฒนามากกว่าหนึ่งคนกำลังทำงานอยู่
Greg Hewgill

2
ฉันคิดว่าคำตอบนั้นบ่งบอกถึงมัน ทำไม "... ที่คุณสร้างในท้องถิ่น ... " และ "... มีชื่อที่มีความหมายสำหรับคุณ" ส่วนที่แท้จริงของสิ่งที่ประกอบเป็น "หัวข้อสาขา"? ประโยคแรกของคำตอบของคุณแสดงให้เห็นอย่างชัดเจนว่าสิ่งเหล่านี้เป็นคุณสมบัติที่สำคัญของสาขาหัวข้อ แต่จริงๆแล้วทั้งสองอย่างตั้งฉากกับ "หัวข้อ" ของสาขาหรือไม่ ย่อหน้าต่อไปนี้ที่คุณอธิบาย "สาขาระยะไกล" สรุปแนวคิดที่ว่าส่วนที่ "สร้างขึ้นภายใน" ของสาขาหัวข้อมีความสำคัญ ฉันขอแนะนำให้เน้นคำตอบนี้อีกครั้งเพื่อไม่เน้นลักษณะสาขาที่ไม่เกี่ยวข้องเหล่านี้
Jean-Paul Calderone

83

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


2
ใช่ เมื่อเทียบกับสาขาส่วนบุคคลที่คุณมีสาขา: บ๊อบอลิซเสื่อ ฯลฯ
webmat

... ดังนั้นสาขาหัวข้อและสาขาคุณลักษณะจึงเหมือนกันใช่ไหม
Betlista

@Betlista ไม่มากก็น้อยใช่มะ
mipadi

28

https://github.com/dchelimsky/rspec/wiki/Topic-Branchesอธิบายสิ่งนี้ได้ดี:

สาขา "หัวข้อ" คือสาขาแยกต่างหากที่คุณใช้เมื่อทำงานกับ "หัวข้อ" เดียว (การแก้ไขข้อบกพร่องคุณลักษณะใหม่หรือแนวคิดทดลอง) แนะนำให้ทำงานในสาขาหัวข้อแทนที่จะอยู่ด้านบนของ "master" โดยตรงเนื่องจาก:

{... ไปที่ลิงค์ ... }

ดังนั้นด้วยเหตุผลทั้งหมดนี้ขอแนะนำให้ใช้สาขาหัวข้อในการเตรียมการส่งแม้กระทั่งการมีส่วนร่วมง่ายๆเช่นการแก้ไขข้อบกพร่องครั้งเดียวและอื่น ๆ

ตัวอย่างนี้ยังยกตัวอย่าง ซึ่งจริงๆแล้วทำให้ฉันคิดว่านี่อาจเป็นสิ่งที่ร้านค้าส่วนใหญ่ทำอยู่แล้ว โครงการที่คล่องตัวทั้งหมดที่ฉันเคยทำ ฉันโหวตให้ "มันไม่ใช่ศัพท์ทางเทคนิค" เพราะฉันรู้สึกว่ามันกระทบกับตะปูบนหัว


4

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

นั่นอาจจะเหมาะกับคุณ แต่เป็นเรื่องของคุณและโครงการที่คุณกำลังคิด Git ไม่ได้กำหนด

ระบบควบคุมเวอร์ชันส่วนใหญ่ (โดยเฉพาะระบบรวมศูนย์) กำหนดหรือบังคับใช้เวิร์กโฟลว์เฉพาะรวมถึงสิ่งที่ควรใช้สำหรับสาขา Git (และ VCS ที่มีการกระจายมากที่สุดในระดับหนึ่ง) พิจารณาว่าเวิร์กโฟลว์นั้นใช้กิ่งก้านอะไรเมื่อใดที่จะกระทำการใช้ repos ที่แตกต่างกัน ฯลฯ ทั้งหมดนี้ถูกเลือกโดยผู้ใช้และข้อตกลงระหว่างผู้ใช้ (นโยบาย) ดังนั้น Git จึงไม่บังคับใช้ในทางเทคนิค

นี่เป็นหนึ่งในสิ่งที่ทำให้ Git ยากสำหรับฉันที่จะเรียนรู้ โอลิเวอร์สตีลอธิบายเรื่องนี้จากมุมมองของผู้เขียนเกี่ยวกับการกระทำนโยบาย

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