Git phân nhánh từ một nhánh tính năng để làm việc trên một tính năng phụ


12

Chúng tôi hiện đang ở trong tình huống sau, trong đó một nhánh tính năng đã được phân nhánh cho một nhánh tính năng phụ (như, làm việc trên các phụ trợ và các thứ trước cho cùng một tính năng):

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

Trước tiên, một nhà phát triển đã hợp nhất tính năng-a vào nhánh tính năng phụ của mình để được cập nhật và sau đó hợp nhất tính năng phụ của mình vào phát triển. Trong khi tính năng ban đầu - một nhánh vẫn tồn tại và chưa hoàn thành.

Theo quan điểm của tôi, điều này dẫn đến một vấn đề là nhánh tính năng hiện đã bị lỗi thời, vì tất cả các thay đổi được hợp nhất thành tính năng phụ và sau đó được phát triển. Ngoài ra, công việc vẫn tiếp tục trên tính năng-a, dẫn đến xung đột hợp nhất trong tương lai và rất nhiều lao động thủ công.

Chúng ta đã rẽ sai ở đâu, và một quy trình làm việc phù hợp với ít rắc rối sẽ như thế nào?

Câu trả lời:


14

Một nên chỉ nhập đến và đi từ chi nhánh phụ huynh. Đối với feature-a-sub, đây là feature-a, không development.

Hợp nhất với nhánh ông bà có nghĩa là lý do mà nhánh cha mẹ được tạo ra chưa được thực hiện, và vâng, như đã lưu ý điều này sẽ tạo ra các vấn đề trong tương lai khi sự phát triển tiếp tục feature-adevelopmentdẫn đến sự phân kỳ của các dòng mã ngày càng tăng và xung đột nhiều hơn đường.

Điều này đã được giả định rằng feature-a-subphụ thuộc vào mã trong feature-a. Nếu feature-a-subthay vào đó là độc lập feature-a, nó không nên được phân nhánh từ feature-atất cả và thay vào đó nên được phân nhánh (và sáp nhập) vào development.

Nếu feature-acần feature-a-subđể làm việc (không chắc chắn nó đã làm như feature-atiếp tục làm việc mà không hợp nhất feature-a-subvào nó), và feature-a-subđộc lập với feature-a, feature-a-subthay vào đó nên có feature-bmột nhánh từ development, hợp nhất trở lại development, và sau đó hợp nhất developmenthoặc feature-b(nếu không hợp nhất 't muốn nhận các thay đổi khác từ phát triển) vào feature-a.

Quy trình công việc nên là:

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 

hoặc là

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             

Liên quan - một bài đọc yêu thích của tôi về triết lý phân nhánh: Chiến lược phân nhánh SCM nâng cao . Mặc dù sách trắng được nhắm mục tiêu đến các hệ thống kiểm soát phiên bản tập trung, các ý tưởng đằng sau vai trò của mỗi chi nhánh có thể rất quan trọng trong việc đảm bảo bạn hiểu những gì đang diễn ra và có thể suy luận về những gì nên được thực hiện tiếp theo với bất kỳ chi nhánh nào.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.