Chúng tôi chỉ mới bắt đầu sử dụng git cho mã sản xuất của mình và chúng tôi đang gặp phải một vấn đề nhỏ trong quy trình làm việc của mình. Chúng tôi cần tìm ra cách xử lý các cải tiến mã chung/sửa lỗi kỹ thuật xuất hiện khi làm việc trên một tính năng.Git tính năng chi nhánh và cải tiến mã nhỏ
Quy trình làm việc mà chúng tôi đã áp dụng là sử dụng 'phát triển' làm chi nhánh tích hợp chính và phát triển tất cả các tính năng trên các nhánh tính năng ngoài 'phát triển'. Khi một tính năng hoàn tất, nhà phát triển tạo yêu cầu kéo và mọi người sẽ đánh giá nó để cung cấp nhận xét trước khi nó được hợp nhất trở lại phát triển. Điều này dường như hoạt động rất tốt.
Vấn đề chúng tôi gặp phải là trong quá trình phát triển thường xuyên tính năng, nhà phát triển có thể muốn sửa đổi/tái cấu trúc một số mã phổ biến để cải thiện hệ thống hoặc xóa một số khoản nợ kỹ thuật. Thay đổi này có giá trị, nhưng không trực tiếp gắn liền với tính năng đang được phát triển.
Dựa trên quy trình làm việc của chúng tôi, nó thực sự nên được thực hiện trên một nhánh khác trải qua yêu cầu kéo và xem xét mã của riêng nó trước khi bắt đầu phát triển. Nếu chúng ta có chúng làm điều này mặc dù, làm thế nào họ có thể nhận được sự thay đổi trở lại vào chi nhánh tính năng của họ trong khi chờ đợi cho việc xem xét mã đầy đủ xảy ra và mã để có được sáp nhập vào phát triển.
Những ý tưởng chúng tôi có là:
1) cherry-nhận những thay đổi từ chi nhánh 'refactorX' vào chi nhánh tính năng của chúng tôi. Tiếp tục phát triển và cho phép git (hy vọng) tìm ra khi chúng ta hợp nhất lại để phát triển rằng nó đã có sự thay đổi từ nhánh refactor.
2) Hợp nhất nhánh 'refactorX' vào chi nhánh tính năng của chúng tôi và tiếp tục phát triển. (lưu ý: chi nhánh phát triển cho 'refactorX' có thể sau này trong lịch sử phát triển, vì vậy chúng tôi nghĩ điều này có thể có vấn đề)
3) Một số tùy chọn thông minh khác mà chúng tôi chưa biết. :)
Những gì chúng tôi đang tìm kiếm là một số hướng dẫn thực hành tốt nhất về cách xử lý phần này của quy trình làm việc. Sau khi nói về nó nhiều hơn chúng ta biết rằng nó sẽ đi lên thường xuyên và chúng tôi muốn tìm một cách trơn tru và hiệu quả để xử lý nó trong công việc của chúng tôi.
Bất kỳ đề xuất nào?
Tùy chọn 2 có vẻ ổn, bạn hình dung ra vấn đề gì? – fge
Tùy chọn 2 có vẻ không rõ ràng, vì bạn đang kết hợp tất cả các thay đổi sau đó từ 'phát triển' vào chi nhánh tính năng của bạn khi bạn làm điều đó (như Allen quan sát). Tùy chọn 1 có vẻ tốt với tôi mặc dù. –
Một mối quan tâm khác với 1 & 2: Tôi không muốn thay đổi được chọn/sáp nhập vào chi nhánh tính năng để hiển thị trong các khác biệt được sử dụng để xem xét mã của yêu cầu kéo. Tôi không thể nghĩ ra một cách tốt để làm điều đó xảy ra mặc dù không phải rebasing. Và vì đây là một chi nhánh "công cộng" được đẩy vào kho trung tâm của công ty, việc rebasing có vẻ như là một "ý tưởng tồi". – Allen