2012-08-29 18 views
6

Chúng tôi có một số chính và một chi nhánh sản xuất. Chi nhánh chính chứa các phát triển hiện tại trong khi nhánh sản xuất chứa các nội dung đang chạy trên máy chủ. Theo thời gian, có một bugfix quan trọng phải được áp dụng cho cả hai nhánh.Lựa chọn thay thế cho việc hái hoa anh đào

Hiện tại, chúng tôi chỉ đang chọn cam kết sau khi tạo nó trên nhánh chính. Nhưng điều này đôi khi tạo ra xung đột hợp nhất khi chúng ta hợp nhất các nhánh. Có phương án thay thế nào không?

+0

Đây thực sự không phải là câu hỏi "git". Xung đột hợp nhất bạn đang thấy là thuộc tính của mã của bạn (nó được phân tách kể từ khi mã sản xuất được triển khai) chứ không phải công cụ của bạn. Các công cụ hợp nhất git (hoặc bất kỳ công cụ hợp nhất nào) không thể đọc được suy nghĩ của bạn và quyết định những gì bạn thực sự "có nghĩa" với mã được sửa đổi trong bản gốc. Theo như các công cụ đi, 'git am' có thể làm việc tốt hơn cho bạn so với lựa chọn anh đào, vì nó cho phép bạn chỉnh sửa hợp nhất tại chỗ mà không mất dữ liệu cam kết. –

Trả lời

7

Bạn có thể tạo một chi nhánh mới (chúng ta hãy gọi nó bugfix-a) tại cơ sở hợp nhất của masterproduction

git checkout -b bugfix-a $(git merge-base master production) 

Áp dụng bugfix của bạn ở chi nhánh đó

>>/path/to/file echo 'this fixes the bug' 
git add /path/to/file 
git commit -m 'important bugfix' 

Sau đó, kết hợp mới này chi nhánh cho cả chủ và sản xuất:

git checkout master 
git merge bugfix-a 
git checkout production 
git merge bugfix-a 

Bằng cách đó bạn sẽ có thể hợp nhất tổng thể và sản xuất vào một ngày sau đó và Git sẽ đủ thông minh để tìm ra những cam kết để chọn.

(đơn điệu - vâng, nó không phải là Git - gọi công việc này daggy fixes)

4

Tạo một nhánh riêng biệt cho mỗi hotfix, và hợp nhất nó vào cả hai chi nhánh phát triển của bạn và chi nhánh sản xuất của bạn.

Mô hình gitflow hoạt động thực sự tốt nói chung, và tôi khuyên bạn nên kiểm tra này ra: http://nvie.com/posts/a-successful-git-branching-model/

chi nhánh tổng thể của bạn là tương tự như chi nhánh phát triển của họ, và chi nhánh sản xuất của bạn là tương tự như bậc thầy của họ

enter image description here

3

Bạn có thể sử dụng Gitflow. Tôi nghĩ rằng 'hotfix' xử lý kịch bản của bạn.