Có, bạn có hai lựa chọn tốt:
Graft: mới trong Mercurial 2,0
Phiên bản này giới thiệu graft command có thể backport thay đổi một cách thông minh. Các "trí thông minh" là nó sẽ sử dụng hòa trộn trong nội bộ và điều này có nghĩa là bạn sẽ có được
Hỗ trợ cho đặt lại tên: Hãy tưởng tượng rằng bạn sửa lỗi trong tập tin foo.c
trên chi nhánh phát triển. Trong chi nhánh bảo dưỡng cũ hơn foo.c
được gọi là bar.c
. Sử dụng hg graft
, thay đổi thành foo.c
có thể được hợp nhất chính xác vào số bar.c
cũ.
Hợp nhất ba chiều: Ghép liên quan đến twisting the graph around và hợp nhất trong biểu đồ tạm thời đó. Lợi thế của việc hợp nhất ba chiều là bạn có thể sử dụng công cụ kết hợp đồ họa thông thường của mình để giải quyết xung đột.
Để sao chép chóp default
vào old-branch
bạn chỉ cần chạy
$ hg update old-branch
$ hg graft default
ghép: cũ phiên bản
Trước khi chúng tôi đã có lệnh ghép, các transplant extension là con đường để đi. Phần mở rộng đơn giản này sẽ xuất khẩu một changeset như một bản vá và cố gắng áp dụng bản vá vào một số bản sửa đổi khác.
Vì chúng tôi đang xử lý các bản vá "câm" nên những thứ như đổi tên sẽ không được tính đến và bạn sẽ không nhận được hỗ trợ cho công cụ hợp nhất của bạn vì không có cách hợp nhất ba chiều. Mặc dù vậy, tôi thấy rằng cấy ghép hoạt động rất tốt trong thực tế.
Sử dụng ghép rất đơn giản:
$ hg update old-branch
$ hg transplant default
này rất gần với chạy
$ hg update old-branch
$ hg export default | hg import -
trừ ghép mà cũng cho biết thêm một phần dữ liệu meta mà ghi lại changeset gốc trong changeset cấy. Điều này có thể được sử dụng để bỏ qua cấy ghép trong tương lai.
Nguồn
2012-04-24 07:22:09
http://stackoverflow.com/questions/854930/mercurial-cherry-picking-changes-for-commit – zerkms
Tôi tìm thấy nó dễ nhất nếu "nhánh phát triển chính" là chính nó là một cây, nơi có những thay đổi khác nhau ("vô danh") chi nhánh phát triển ra và sau đó được đưa trở lại trong ... –
(không phải là một câu trả lời, do đó nhận xét) * "Tôi nghĩ rằng nó sẽ có được tốt hơn để thực hiện thay đổi trên chi nhánh cũ" * ...Nó * có thể * thậm chí còn tốt hơn để áp dụng bugfix đó như là một "sửa lỗi daggy": bạn quay trở lại nơi lỗi đã được giới thiệu, bạn cam kết sửa lỗi và hợp nhất ngược dòng. Áp dụng nó "càng sớm càng tốt" * có thể * thậm chí tốt hơn là áp dụng đầu tiên cho "chi nhánh cũ" của bạn (bất kể đó là gì). Đối với các bản sửa lỗi nhỏ, sửa lỗi làm hoàn toàn đá (IMHO): http://mercurial.selenic.com/wiki/DaggyFixes – TacticalCoder