อันที่จริงแล้วมีความเป็นไปได้ที่สาม - และส่วนใหญ่อาจเป็นจำนวนมากเนื่องจาก GIT เป็นการนำเฟรมเวิร์ก SCM มาใช้มากกว่าการใช้ระเบียบวิธี SCM rebase
นี้ไปได้ที่สามจะขึ้นอยู่กับ
คำrebase
สั่งย่อย GIT ใช้ชุดของการคอมมิต (โดยทั่วไปจากจุดการแยกของคุณไปยังส่วนท้ายของหัวข้อของคุณtopic
) และเล่นซ้ำที่อื่น (โดยทั่วไปจะอยู่ที่ส่วนท้ายของการรวมสาขาของคุณmaster
) คำrebase
สั่งย่อยสร้างการคอมมิตใหม่ซึ่งเปิดโอกาสให้จัดเรียงการคอมมิตในรูปแบบที่ง่ายต่อการตรวจสอบ สิ่งนี้ให้ผลการกระทำแบบใหม่คล้ายกับสิ่งที่topic
เคยเป็น แต่ปรากฏรากที่ด้านบนของสาขาการรวม สาขาใหม่นี้ยังคงถูกเรียกใช้topic
โดย GIT เพื่อให้การอ้างอิงเก่าถูกยกเลิก ฉันติดป้ายtopic-0
สถานะดั้งเดิมของสาขาของคุณอย่างไม่เป็นทางการtopic-1
และในการปรับโครงสร้างต่างๆ
นี่คือคำแนะนำของฉันสำหรับtopic
สาขาของคุณ:
(ขั้นตอนเพิ่มเติม) คุณจะลดระดับหัวข้อของคุณแบบโต้ตอบtopic
ในจุดแยกสาขา (ดู--fixup
ตัวเลือกสำหรับcommit
และ-i
และ--autosquash
ตัวเลือกบนrebase
) ซึ่งเปิดโอกาสให้คุณเขียนคำมั่นสัญญาของคุณในวิธีที่ง่ายต่อการตรวจสอบ topic-1
ผลนี้ในสาขา
คุณ rebase หัวข้อสาขาของคุณที่ด้านบนของสาขาการรวมของคุณคล้ายกับการผสาน แต่ประวัติศาสตร์ "ไม่ก่อให้เกิดมลพิษ" ด้วยการผสานที่เป็นเพียงสิ่งประดิษฐ์วิศวกรรมซอฟต์แวร์ topic-2
ผลนี้ในสาขา
ส่งให้เพื่อนร่วมทีมที่ความคิดเห็นมันกับปลายของtopic-2
master
ถ้าtopic-2
ไม่เป็นไรก็ให้รวมมันเป็นหลัก
หมายเหตุสาขาที่สาขาอ้างถึงต้นไม้ที่รับมอบทั้งหมดจะถูกเรียกโดย GIT ดังนั้นในตอนท้ายของกระบวนการเฉพาะสาขาเท่านั้นที่topic-2
มีชื่อใน GIT
ข้อดี:
- ไม่มีรหัสล้าสมัยในการตรวจสอบ
- ไม่มีบทวิจารณ์ "การรวม บริษัท ต่างประเทศ" ปลอม (ปรากฏการณ์ที่คุณอธิบายไว้ในที่ 1)
- โอกาสในการเขียนซ้ำกระทำอย่างสะอาด
จุดด้อย:
- แทนที่จะสาขาหนึ่ง
topic-0
มีสามสิ่งประดิษฐ์สาขาtopic-0
, topic-1
และtopic-2
ที่สร้างขึ้นในการกระทำต้นไม้ (แม้ว่าจะตลอดเวลาเพียงหนึ่งในนั้นเท่านั้นที่มีชื่อใน GIT)
ในสถานการณ์ที่ 1 ของคุณ«ถ้ามีคนรวมบางสิ่งบางอย่างระหว่าง "1. " และ "2. " »หมายถึงการขยายเวลาระหว่างการสร้างจุดสาขาและเวลาที่คุณตัดสินใจผสาน ในสถานการณ์นี้«ถ้ามีคนรวมบางสิ่งบางอย่างระหว่าง "1. " และ "2. " »หมายถึงเวลาที่อยู่ระหว่าง rebase และการรวมซึ่งมักจะสั้นมาก ดังนั้นในสถานการณ์ที่ฉันให้คุณสามารถ«ล็อค» master
สาขาสำหรับช่วงเวลาของการผสานโดยไม่รบกวนเวิร์กโฟลว์ของคุณอย่างมีนัยสำคัญในขณะที่มันทำไม่ได้ในสถานการณ์ที่ 1
หากคุณกำลังทำรีวิวโค้ดอย่างเป็นระบบคุณควรจัดเรียงคอมมิทใหม่ด้วยวิธีที่เหมาะสม (ขั้นตอนเพิ่มเติม)
การจัดการสิ่งประดิษฐ์สาขาระดับกลางจะแสดงความยากลำบากหากคุณแบ่งปันสิ่งเหล่านั้นระหว่างที่เก็บข้อมูล