Tôi đã thấy các nhánh nhà phát triển được sử dụng trong hai kịch bản chính:
Cộng đồng nguồn mở, nơi các nhánh này thực sự là các nhánh kho lưu trữ, để những người duy trì dự án có thể khóa truy cập vào kho lưu trữ chính và yêu cầu tích hợp thông qua các yêu cầu kéo. Điều này làm cho cuộc sống của những người đóng góp trở nên khó khăn hơn, nhưng dễ dàng hơn nhiều cho những người bảo trì, tất nhiên đó là điểm chính xác, và đây là một mô hình rất thành công trên GitHub.
Các nhóm và tổ chức không có sự tích hợp liên tục và hồ sơ theo dõi về sự không ổn định trong việc triển khai của họ, hoặc tệ hơn là sự không ổn định trong các bản dựng của họ. Các nhóm này thường cố gắng sử dụng các nhánh nhà phát triển như một cách để bảo vệ sự ổn định của tuyến chính, và kết quả là - thông thường - một giai đoạn hợp nhất dài và rất đau đớn trước khi phát hành, sau đó là một giai đoạn ổn định lâu hơn và đau đớn hơn, đôi khi không xảy ra cho đến sau khi phát hành.
Tôi không muốn đây là một lời ca ngợi về lý do tại sao bạn cần CI, nhưng rõ ràng từ câu hỏi của bạn rằng bạn biết rằng bạn không tích hợp các thay đổi của mình đủ thường xuyên, vì vậy IMO không có vấn đề gì trong việc giải quyết vấn đề.
Trừ khi bạn thực sự làm việc trong một nhóm phân phối theo địa lý có nhu cầu "chuyển" các thay đổi từ các nhà phát triển bên ngoài, mô hình chi nhánh cho mỗi nhà phát triển thực sự không có ý nghĩa nhiều. Nó đặc biệt không có ý nghĩa với git, vì mỗi nhà phát triển đã về mặt kỹ thuật có kho riêng / mình. Hầu hết các tổ chức nên được tích hợp rất thường xuyên - như trong, vài lần mỗi ngày.
Tôi hiện đang là thành viên của một nhóm khoảng 35 người đóng góp được chia thành 4 nhóm riêng biệt, hầu hết mọi người đăng ký ít nhất 2-3 lần một ngày, một số người từ 10 - 15 lần; Thật bất thường khi thấy các bản dựng bị hỏng và cực kỳ hiếm khi chúng bị hỏng trong hơn một vài phút. Git xử lý hợp nhất rất dễ dàng trong hầu hết thời gian mà các nhánh nhà phát triển từ xa chỉ là chi phí không cần thiết. Chỉ cần kéo, hợp nhất cục bộ và chạy thử nghiệm cam kết trước khi bạn đẩy, thật đơn giản.
Nếu bạn hoàn toàn phải trì hoãn tích hợp để bảo vệ sự ổn định của nhánh chính, mô hình đã được chứng minh, điển hình là sử dụng nhánh không ổn định - đôi khi được gọi là nhánh phát triển , như được mô tả trong Mô hình phân nhánh Git thành công . Nếu các nhà phát triển không thể hợp nhất thành công vào chi nhánh này (chỉ cần xây dựng , không chạy hoàn hảo) ít nhất một lần một ngày, thì bạn có vấn đề về chất lượng / kỷ luật và không phải là vấn đề kiểm soát sửa đổi; che đậy nó bằng cách sử dụng các nhánh nhà phát triển không tích hợp chỉ khắc phục vấn đề và bằng cách đó, thực sự làm cho sự hợp nhất cuối cùng trở nên đau đớn và không ổn định hơn nhiều so với thực tế.
Các nhánh tính năng không phải là tồi tệ nhất, nhưng IMO rất ít dự án thực sự đủ lớn để đảm bảo chúng; nếu dự án của bạn rất lớn (tức là hàng tấn các tính năng đang được xử lý cùng một lúc) thì bạn sẽ thấy kết quả tốt hơn từ việc tách nó thành các thành phần tự trị riêng biệt so với việc bạn vượt qua vấn đề với kiểm soát nguồn.
Bạn có thể bỏ qua lời khuyên này nếu bạn muốn, và nhiều nhóm thực hiện, nhưng một trong những lý do mô hình phân nhánh được liên kết ở trên rất phổ biến và thành công là nó được thiết kế để hoạt động với tích hợp liên tục, không chống lại nó.