เมื่อใช้ Git จะใช้สาขาหลักสำหรับการพัฒนาที่แนะนำหรือไม่?


32

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

  1. ได้รับอิทธิพลอย่างมากจากบทความ nvie.com เกี่ยวกับการประสบความสำเร็จในการแยกย่อยด้วยสาขาหลักซึ่งเป็นรหัสที่เสถียรที่สุด, สาขาการพัฒนาสำหรับโค้ด edge bleeding และสาขาการรวมสำหรับโค้ดที่พร้อมสำหรับการทดสอบ QA

  2. โมเดลสำรองที่สาขาหลักเป็นตัวแทนของรหัสการพัฒนา edge edge, Branch Integration สำหรับรหัสที่พร้อมสำหรับการทดสอบ QA และสาขาการผลิตสำหรับรหัสที่เสถียรที่พร้อมสำหรับการปรับใช้

ณ จุดนี้มันเป็นส่วนหนึ่งของความหมายเกี่ยวกับสิ่งที่สาขาหลักหมายถึง แต่กำลังทำการพัฒนาที่แข็งขันในสาขาหลักจริง ๆ แล้วเป็นการปฏิบัติที่ดีหรือไม่จริงหรือไม่เกี่ยวข้องกัน?


1
ฉันชอบ worfklow ที่ Scott Chacon ใช้พัฒนา GitHub: scottchacon.com/2011/08/31/github-flow.html
user16764

1
ตามที่อธิบายไว้ดูเหมือนว่าฉันจะเป็นปัญหาความหมายมากกว่าไม่ - องค์กรใด ๆ ที่จะพัฒนากระบวนการของตัวเองและในบางกรณีชื่อต้องสะท้อนถึงเวิร์กโฟลว์ของคุณ โดยทั่วไปดูเหมือนว่ากุญแจสำคัญอยู่ที่ใดที่หนึ่งที่คุณกำหนดบางสิ่งบางอย่างเช่น "ซอร์สโค้ดของ HEAD จะแสดงสถานะพร้อมใช้งานจริง" สิ่งที่คุณเลือกเรียกว่าสำคัญน้อยกว่า แต่ทั้ง git-flow และเวิร์กโฟลว์ GitHub นั้นมุ่งเน้นไปที่การแยกนั้นและการควบคุมเมื่อคุณกดไปที่ "thingy" ที่พร้อมใช้งานจริง
Murph

@Murph - จริง แต่เนื่องจากเรากำลังทำสิ่งนี้ตั้งแต่เริ่มต้นฉันคิดว่ามันจะเป็นการดีที่สุดที่จะทำตามแบบแผนทั่วไปเพื่อให้นักพัฒนาใหม่ที่ได้รับการว่าจ้างไม่มีเส้นโค้งการเรียนรู้ที่สูงชันเนื่องจากการปฏิบัติภายในที่ผิดปกติ
rjzii

ถ้าอย่างนั้นคุณก็ตอบคำถามของคุณเอง (-: พูดตามตรงแม้กระทั่งถามคำถามว่าคุณไปไกลแค่ไหนในช่วงโค้ง ...
Murph

คำตอบ:


33

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

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


7
+1 และเนื่องจากรหัส "พร้อมใช้งานการผลิต" เป็นรหัสสำคัญจึงควรอยู่ในสาขาที่มีชื่อซึ่งเน้นความสำคัญนี้ "master" เป็นชื่อสาขาเริ่มต้นแน่นอนไม่ตอบสนองคำขอดังกล่าวเนื่องจากมันถูกใช้ในที่เก็บอื่น ๆ สำหรับความตั้งใจ
Bananeweizen

4
+1 นี่คือคำตอบในชีวิตจริง เพื่อเน้นประเด็น: ไม่มีใครในทีมของคุณกำหนดสาขา "ต้นแบบ" ระบบ git ทำ สำหรับทุกสิ่งที่สำคัญให้ยึดสาขาที่มีคนในทีมของคุณกำหนดไว้
Travis Wilson

1
เห็นด้วยอย่างเต็มที่. ในขณะที่ฉันชอบรูปแบบการไหลของคอมไพล์มาก ( nvie.com/posts/a-successful-git-branching-model ) สิ่งเดียวที่รบกวนฉันนั่นก็คือเจ้านายคนนั้นสงวนไว้อย่างเคร่งครัดสำหรับการเผยแพร่
Bachi

12

ไม่ไม่แนะนำแม้ในตอนแรกก่อนที่คุณจะไปที่ QA แนวทางปฏิบัติที่ดีที่สุดรูปแบบการพัฒนาควรสอดคล้องตั้งแต่ต้นจนจบ สาขาหลักของคุณควรเริ่มว่างเปล่าคุณควรแยกสาขาการพัฒนาของคุณออกและเริ่มเพิ่มไฟล์รวมเข้าในสาขาการรวมของคุณจากนั้นต่อไปยังต้นแบบของคุณ

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


3
การติดตามเวอร์ชันผ่านแท็กดีกว่าหรือไม่
Adonis K. Kakoulidis

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