Tôi có một dự án tôi quản lý từ một kho lưu trữ git. Chúng tôi sử dụng chiến lược phân nhánh progit (như được mô tả trong câu trả lời được chấp nhận, tại đây: Git branch strategy for small dev team) trong đó một chi nhánh là chi nhánh sản xuất và một chi nhánh khác là chi nhánh phát triển/thử nghiệm. Chúng tôi triển khai mã bằng vải.Nơi lưu trữ sự khác biệt giữa chi nhánh sản xuất và dev trong git?
Khi chúng tôi sẵn sàng tạo bản phát hành mới với git, chúng tôi hợp nhất chi nhánh phát triển/thử nghiệm vào chi nhánh sản xuất và sau đó triển khai chi nhánh sản xuất bằng vải. Vấn đề là có sự khác biệt về mã giữa phát triển và sản xuất - một số biểu tượng thay đổi, một số máy chủ/thông tin đăng nhập DB khác nhau, loại điều đó. Tôi đã giữ một tập tin .patch có chứa sự khác biệt và có vải áp dụng các bản vá khi nó triển khai môi trường sản xuất, nhưng điều này không hoạt động tốt. Đặc biệt, nó hoàn toàn thất bại nếu một số mã xung quanh bản vá đã thay đổi - bản vá không thể áp dụng và hủy triển khai của tôi.
Tôi đã tự hỏi liệu tôi có nên áp dụng trực tiếp tất cả thay đổi của mình cho chi nhánh sản xuất không? Những hạn chế của việc này là gì?
Một trường hợp sử dụng cụ thể mà tôi quan tâm là nếu chúng ta cần thực hiện một hotfix. Chúng tôi hiện đang làm điều này bằng cách phân nhánh từ môi trường sản xuất, thực hiện các thay đổi và sau đó sáp nhập chi nhánh đó trở lại cả phát triển và sản xuất. Nếu nhánh sản xuất khác với phát triển, những thay đổi đó có thể được kéo vào nhánh phát triển khi hotfix được hợp nhất vào phát triển không?
ok, vì vậy, điều này không có tác dụng: khi tôi chuyển sang 'git merge development' từ sản xuất bất cứ khi nào tôi phát hành, sự khác biệt trong nhánh phát triển sẽ ghi đè các thay đổi chỉ sản xuất trong chi nhánh sản xuất. tôi cần giữ những thay đổi không rời khỏi nhánh sản xuất - chúng không đi vào bất kỳ chi nhánh nào khác, cũng như chúng không bị ghi đè bởi bất kỳ chi nhánh nào khác. –
@IgorSerebryany: Nếu bạn đang thực hiện các thay đổi về phát triển cho cùng một dòng chính xác mà bạn đang cố gắng bảo toàn trong Sản xuất, thì có, bạn sẽ gặp sự cố. Mỗi khi bạn thực hiện một thay đổi như vậy, bạn phải thực hiện việc kết hợp giả để về cơ bản "nướng trong đá" cách nhánh sản xuất được cho là trông như thế nào đối với các dòng đó. –
tôi đã làm ba lê tinh tế sau đây: (1) chắc chắn rằng hai chi nhánh đã được đồng bộ; (2) tôi áp dụng các thay đổi của mình cho chi nhánh sản xuất (3) 'git merge -s ours production' từ chi nhánh phát triển; (4) 'git merge -s ours development' từ chi nhánh sản xuất. kết quả là, tôi nghĩ rằng tôi đã đạt đến trạng thái tôi muốn, nơi mà những thay đổi của tôi không bị che khuất và không được chuyển ra khỏi sản xuất. –