Công ty chúng tôi hiện đang sử dụng mô hình phân nhánh trunk / phát hành / hotfix đơn giản và muốn tư vấn về mô hình phân nhánh nào hoạt động tốt nhất cho công ty hoặc quá trình phát triển của bạn.
Mô hình quy trình / phân nhánh
Dưới đây là ba mô tả chính về điều này tôi đã thấy, nhưng chúng mâu thuẫn một phần với nhau hoặc không đi đủ xa để giải quyết các vấn đề tiếp theo mà chúng tôi gặp phải (như được mô tả dưới đây). Do đó, nhóm của chúng tôi cho đến nay mặc định không phải là giải pháp tuyệt vời. Bạn đang làm một cái gì đó tốt hơn?
Sáp nhập vs nổi loạn (rối và lịch sử tuần tự)
Nên một
pull --rebase
hoặc chờ đợi với việc hợp nhất trở lại dòng chính cho đến khi nhiệm vụ của bạn kết thúc? Cá nhân tôi nghiêng về việc hợp nhất vì điều này bảo tồn một minh họa trực quan về cơ sở mà một nhiệm vụ đã được bắt đầu và kết thúc, và tôi thậm chí thíchmerge --no-ff
cho mục đích này. Nó có nhược điểm khác tuy nhiên. Ngoài ra, nhiều người đã không nhận ra thuộc tính hữu ích của việc hợp nhất - rằng nó không giao hoán (sáp nhập một nhánh chủ đề thành chủ không có nghĩa là sáp nhập chủ vào nhánh chủ đề).Tôi đang tìm kiếm một quy trình làm việc tự nhiên
Đôi khi sai lầm xảy ra vì các thủ tục của chúng tôi không nắm bắt được một tình huống cụ thể với các quy tắc đơn giản. Ví dụ, một bản sửa lỗi cần thiết cho các bản phát hành trước đó tất nhiên phải dựa trên dòng dưới đủ để có thể hợp nhất ngược dòng vào tất cả các nhánh cần thiết (việc sử dụng các thuật ngữ này có đủ rõ ràng không?). Tuy nhiên, có một bản sửa lỗi khiến nó trở thành chủ trước khi nhà phát triển nhận ra rằng nó nên được đặt ở phía dưới và nếu nó đã được đẩy (thậm chí tệ hơn, được hợp nhất hoặc một cái gì đó dựa trên nó) thì tùy chọn còn lại là chọn anh đào, với hiểm họa liên quan của nó. Những quy tắc đơn giản như vậy bạn sử dụng?Ngoài ra trong điều này còn bao gồm sự lúng túng của một nhánh chủ đề nhất thiết phải loại trừ các nhánh chủ đề khác (giả sử chúng được phân nhánh từ một đường cơ sở chung). Các nhà phát triển không muốn hoàn thành một tính năng để bắt đầu một tính năng khác giống như mã họ vừa viết không còn ở đó nữa
Làm thế nào để tránh tạo xung đột hợp nhất (do cherry-pick)?
Điều có vẻ như là một cách chắc chắn để tạo ra một cuộc xung đột hợp nhất là chọn cherry giữa các nhánh, chúng không bao giờ có thể được hợp nhất lại? Sẽ áp dụng cùng một cam kết trong hoàn nguyên (làm thế nào để làm điều này?) Trong một trong hai chi nhánh có thể giải quyết tình huống này? Đây là một lý do tôi không dám thúc đẩy một quy trình làm việc dựa trên hợp nhất.
Làm thế nào để phân hủy thành các chi nhánh?
Chúng tôi nhận thấy rằng sẽ rất tuyệt vời khi lắp ráp một tích hợp đã hoàn thành từ các nhánh chủ đề, nhưng thường thì các nhà phát triển của chúng tôi không làm việc rõ ràng (đôi khi đơn giản như "chọc ngoáy") và nếu một số mã đã đi vào chủ đề "linh tinh", nó không thể được đưa ra khỏi đó một lần nữa, theo câu hỏi trên? Làm thế nào để bạn làm việc với việc xác định / phê duyệt / tốt nghiệp / phát hành các nhánh chủ đề của bạn?
Các thủ tục thích hợp như xem xét mã và tốt nghiệp tất nhiên sẽ rất đáng yêu.
Nhưng chúng tôi chỉ đơn giản là không thể giữ mọi thứ đủ rối để quản lý điều này - có đề xuất nào không? hội nhập ngành, minh họa?
Dưới đây là danh sách các câu hỏi liên quan:
- Một số chiến lược tốt để cho phép các ứng dụng được triển khai là hotfix là gì?
- Mô tả quy trình làm việc để sử dụng Git để phát triển nội bộ
- Quy trình công việc Git để phát triển nhân Linux của công ty
- Làm thế nào để bạn duy trì mã phát triển và mã sản xuất? (cảm ơn vì bản PDF này !)
- quản lý phát hành git
- Git Cherry-pick vs Hợp nhất công việc
- Cách chọn cherry nhiều lượt
- Làm thế nào để bạn hợp nhất các tệp chọn lọc với git-merge?
- Làm thế nào để anh đào chọn một loạt các cam kết và hợp nhất vào một chi nhánh khác
- Công việc của ReinH Git
- quy trình công việc git để thực hiện sửa đổi, bạn sẽ không bao giờ đẩy trở lại nguồn gốc
- Cherry-pick hợp nhất
- Quy trình làm việc Git thích hợp cho hệ điều hành kết hợp và mã riêng?
- Duy trì dự án với Git
- Tại sao không thể hợp nhất tệp Git thay đổi với cha / chủ đã sửa đổi.
- Git phân nhánh / nổi loạn thực hành tốt
- Khi nào "git pull --rebase" sẽ khiến tôi gặp rắc rối?
- DVCS được sử dụng như thế nào trong các đội lớn?
Ngoài ra, hãy kiểm tra xem SCM nhựa viết gì về phát triển theo hướng nhiệm vụ và nếu Nhựa không phải là lựa chọn của bạn, hãy nghiên cứu mô hình phân nhánh của nvie và các tập lệnh hỗ trợ của anh ấy .