CHERRY PICK LÀ GÌ

Xem qua sách Git trực tuyến, tôi tra cứu thấy hầu hết sản phẩm sau vào phần "Git Rebase":

Với lệnh rebase, chúng ta cũng có thể thực hiện toàn bộ những biến đổi đã có được cam đoan bên trên một nhánh và phát lại chúng bên trên một nhánh khác.

Bạn đang xem: Cherry pick là gì

(Trích dẫn từ: http://git-scentimet.com/book/vi/Git-Branching-Rebasing )

Tôi nghĩ về đó là có mang đúng chuẩn của git cherry-pick (áp dụng lại một cam kết hoặc một tập đúng theo các đối tượng người dùng cam kết trên nhánh hiện đã có kiểm tra).

Sự khác hoàn toàn giữa hai là gì?


Kể tự thời hạn git cherry-pickđược học tập nhằm rất có thể áp dụng nhiều khẳng định, sự biệt lập đích thực đang trsống bắt buộc bất đồng quan điểm, mà lại đó là thiết bị được gọi là sự tiến hóa hội tụ ;-)

Sự biệt lập thực thụ nằm tại mục tiêu ban đầu để tạo thành cả hai công cụ:

git rebaseNhiệm vụ của trọng trách là nối tiếp hàng loạt những biến hóa cơ mà nhà trở nên tân tiến gồm vào kho lưu trữ riêng rẽ tư của họ, được tạo thành dựa trên phiên phiên bản X của một nhánh ngược mẫu như thế nào kia, sang trọng phiên bản Y của cùng nhánh kia (Y> X). Điều này có tác dụng đổi khác cơ sở của chuỗi cam kết kia, cho nên "phục hồi".

(Nó cũng chất nhận được đơn vị trở nên tân tiến ghnghiền một loạt khẳng định vào ngẫu nhiên cam đoan tùy ý nào, nhưng điều đó ít rõ ràng hơn.)

git cherry-picklà nhằm đem về một cam đoan thú vị từ bỏ mẫu cải tiến và phát triển này sang trọng chiếc trở nên tân tiến khác. Một ví dụ cổ điển là sao lưu giữ một bạn dạng sửa lỗi bảo mật thông tin được tiến hành bên trên một nhánh cải cách và phát triển không ổn định qua 1 nhánh bất biến (bảo trì), điều đó mergekhông có chân thành và ý nghĩa gì, vì nó sẽ đem lại rất nhiều đổi khác không hề muốn.

Kể trường đoản cú lần mở ra trước tiên, git cherry-pickđã có thể lựa chọn nhiều khẳng định cùng một lúc, từng cái một.

Xem thêm: Bear In Mind, Keep In Mind Là Gì ? Các Thành Ngữ Với Mind Keep In Mind

Do đó, rất có thể sự khác hoàn toàn nổi bật nhất thân nhì lệnh này là phương pháp chúng xử lý nhánh mà bọn chúng hoạt động: git cherry-pickhay chuyển một khẳng định xuất phát từ 1 khu vực khác với vận dụng nó trên nhánh bây giờ của khách hàng, khắc ghi một khẳng định mới , trong những lúc git rebasemang nhánh hiện nay của chúng ta với viết lại một loạt các cam kết về mẹo của riêng rẽ nó Theo phong cách này giỏi cách khác. Đúng vậy, đây là một biểu lộ sâu sắc về những gì git rebaserất có thể làm, nhưng nó bao gồm công ty đích, để nỗ lực khiến cho ý tưởng phát minh bình thường đi sâu vào.

Cập nhật nhằm giải thích thêm 1 ví dụ về Việc áp dụng git rebaseđang rất được bàn luận.

Trước tình hình này,

*
Sách nói:

Tuy nhiên, gồm một phương pháp khác: bạn có thể rước bản vá của chuyển đổi đã được reviews vào C3 với áp dụng lại nó bên trên C4. Trong Git, vấn đề đó được điện thoại tư vấn là hồi sinh. Với lệnh rebase, chúng ta có thể tiến hành toàn bộ những biến đổi đã làm được cam kết trên một nhánh cùng vận dụng bọn chúng mang lại nhánh khác.

Trong ví dụ này, các bạn sẽ chạhệt như sau:

$ git checkout experiment$ git rebase masterFirst, rewinding head lớn trả lời your work on top of it...Applying: added staged command"Điểm nổi bật" sinh sống đây là vào ví dụ này, nhánh "demo nghiệm" (đối tượng người tiêu dùng phục hồi) ban sơ được tách bóc thoát khỏi nhánh "chính" và vì vậy nó phân tách sẻ cam kết trường đoản cú C0 cho C2 cùng với nó - một biện pháp công dụng, "thử nghiệm" là " master "lên đến mức, với bao hàm, C2 cộng với cam đoan C3 ngơi nghỉ trên nó. (Đây là ngôi trường đúng theo đơn giản độc nhất rất có thể xảy ra; tất nhiên, "demo nghiệm" rất có thể chứa hàng trăm cam đoan bên trên đại lý ban sơ của nó.)

Bây tiếng git rebaseđược đề xuất địa thế căn cứ lại "thử nghiệm" vào mẹo hiện tại tại của "bậc thầy" và git rebasediễn ra như sau:

Chạy git merge-baseđể thấy cam đoan sau cùng được share vì cả "test nghiệm" và "chủ" (nói theo một cách khác, điểm chuyển sang làn đường khác là gì). Đây là C2.Lưu tất cả những cam kết vẫn tiến hành Tính từ lúc điểm đưa hướng; vào ví dụ thứ nghịch của Shop chúng tôi, nó chỉ cần C3.Tua lại HEAD (trỏ đến cam đoan mẹo của "thử nghiệm" trước lúc hoạt động ban đầu chạy) để trỏ mang lại mẹo của "chủ" - Shop chúng tôi sẽ phục hồi nó.Cố nạm áp dụng từng cam kết đã lưu (nhỏng thể với git apply) theo vật dụng tự. Trong ví dụ vật nghịch của chúng tôi, nó chỉ là một khẳng định, C3. Giả sử vận dụng của chính nó sẽ khởi tạo ra một cam kết C3 ".Nếu hầu như câu hỏi thuận buồm xuôi gió, tmê man chiếu "test nghiệm" sẽ tiến hành update nhằm trỏ đến khẳng định có được từ những việc áp dụng cam kết đã lưu lại sau cùng (C3 "vào trường hòa hợp của bọn chúng tôi).

Bây giờ quay trở về thắc mắc của người tiêu dùng. Nlỗi bạn cũng có thể thấy, ở đây đích thực về khía cạnh kỹ thuật git rebase cấy ghép một loạt các khẳng định từ "thử nghiệm" mang lại mẹo của "bậc thầy", vị vậy bạn có thể biết đúng chuẩn rằng đích thực tất cả "một nhánh khác" vào quá trình này. Nhvừa ý đó là cam kết mẹo trường đoản cú "demo nghiệm" đang trở thành khẳng định mẹo new vào "demo nghiệm", nó chỉ thay đổi cửa hàng của nó:

*

Một đợt tiếp nhữa, về phương diện nghệ thuật, bạn có thể nói rằng git rebaseở đây vẫn kết hợp một số cam kết nhất quyết từ "chủ" và điều đó trọn vẹn đúng đắn.