Git branching จากฟีเจอร์ branch เพื่อทำงานบนฟีเจอร์ย่อย


12

ขณะนี้เราอยู่ในสถานการณ์ต่อไปนี้ที่สาขาฟีเจอร์ได้รับการแยกสาขาสำหรับฟีเจอร์ย่อย (เช่นทำงานบนแบ็กเอนด์และส่วนหน้าสำหรับฟีเจอร์เดียวกัน):

o 
|
o development
|\
| o feature-a
| |
| o
| |\
| | o feature-a-sub
| | |
| | |
|  \
|   o merged feature-a into feature-a-sub
|  /
o feature-a-sub merged into development
| |
| o feature-a with future work on it
|
o development

นักพัฒนาคนแรกได้รวมฟีเจอร์ -a เข้ากับฟีเจอร์ -a-sub เพื่อให้ทันสมัยและจากนั้นผสานฟีเจอร์ -a-sub เข้ากับการพัฒนา ในขณะที่คุณลักษณะเริ่มต้น - สาขายังคงมีอยู่และยังไม่เสร็จสิ้น

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

เราจะเลี้ยวผิดที่ไหนและเวิร์กโฟลว์ที่เหมาะสมที่มีปัญหาน้อยกว่าจะเป็นอย่างไร

คำตอบ:


14

หนึ่งควรผสานไปและกลับจากสาขาหลัก สำหรับfeature-a-subนี้เป็นไม่ได้feature-adevelopment

การรวมเข้ากับสาขา grandparent หมายความว่าสาเหตุที่สร้างสาขาแม่ยังไม่สำเร็จและใช่ดังที่กล่าวนี้จะสร้างปัญหาในอนาคตที่การพัฒนายังคงดำเนินต่อไปfeature-aและdevelopmentนำไปสู่ความแตกต่างที่เพิ่มขึ้นของบรรทัดรหัสและความขัดแย้งมากขึ้น ถนน.

นี้ถูกสมมติว่าขึ้นอยู่กับรหัสในfeature-a-sub feature-aหากfeature-a-subเป็นอิสระจากfeature-aกันก็ไม่ควรแยกจากกันfeature-aเลยและควรแยก (และรวมเข้าด้วยกัน) developmentแทน

หากfeature-aจำเป็นต้องใช้feature-a-subในการทำงาน (ไม่แน่ใจว่ามันไม่ได้เป็นfeature-aงานอย่างต่อเนื่องโดยไม่ต้องผสานของfeature-a-subเป็นมัน) และfeature-a-subความเป็นอิสระของfeature-a, feature-a-subควรแทนที่จะได้รับfeature-bกับสาขาจากdevelopmentการกลับมาผสานเข้าdevelopmentและแล้วทั้งผสานของdevelopmentหรือfeature-b(ถ้า doesn 'ต้องการที่จะรับการเปลี่ยนแปลงอื่น ๆ จากการพัฒนา) feature-aลง

เวิร์กโฟลว์ควรเป็น:

o                                        
|                                        
o development                            
|\                                       
| o feature-a                            
| |                                      
| o                                      
| |\                                     
| | o feature-a-sub                      
| | |                                    
| | |                                    
| | |                                    
| | o merged feature-a into feature-a-sub
| |/                                     
| o feature-a-sub merged into feature-a  
| |                                      
| o feature-a with future work on it     
|                                        
o development 

หรือ

o                                                  
|                                                  
o development                                      
|\                                                 
| \                                                
|  \                                               
|   o feature-a                                    
|\  |                                              
| b | feature-b                                    
| | |                                              
| | |                                              
| | |                                              
| b | feature-b complete                           
|/ \|                                              
o   o feature-b merged to development and feature-a
|   |                                              
|   o feature-a with future work on it             

ที่เกี่ยวข้อง - อ่านชื่นชอบของฉันเกี่ยวกับปรัชญาของการแยก: กลยุทธ์ขั้นสูง SCM กิ่ง ในขณะที่เอกสารไวท์เปเปอร์ถูกกำหนดเป้าหมายไปยังระบบควบคุมเวอร์ชันรวมศูนย์แนวคิดที่อยู่เบื้องหลังบทบาทของแต่ละสาขาสามารถมีความสำคัญในการทำให้แน่ใจว่าคุณเข้าใจสิ่งที่เกิดขึ้นและสามารถให้เหตุผลเกี่ยวกับสิ่งที่ควรทำต่อไปกับสาขาที่กำหนด

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