Hướng dẫn git cherry

Xem qua sách Git trực tuyến đường, tôi tìm kiếm thấy phần đa sản phẩm công nghệ sau vào phần "Git Rebase":

Với lệnh rebase, chúng ta cũng có thể triển khai toàn bộ các biến hóa đã làm được cam đoan trên một nhánh cùng phát lại bọn chúng bên trên một nhánh không giống.

Bạn đang xem: Hướng dẫn git cherry

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

Tôi nghĩ đấy là có mang chính xác của git cherry-pick (vận dụng lại một cam kết hoặc một tập vừa lòng những đối tượng người dùng cam đoan trên nhánh hiện đã được kiểm tra).

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


Kể từ bỏ thời gian git cherry-pickđược học để có thể áp dụng nhiều khẳng định, sự khác hoàn toàn thực sự vẫn trở đề xuất tranh cãi, nhưng lại đây là trang bị được Điện thoại tư vấn là việc tiến hóa hội tụ ;-)

Sự biệt lập thực thụ nằm tại vị trí mục tiêu ban đầu nhằm tạo nên cả nhì công cụ:

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

(Nó cũng chất nhận được công ty cải cách và phát triển ghép hàng loạt cam kết vào ngẫu nhiên khẳng định tùy ý làm sao, tuy nhiên vấn đề đó ít rõ ràng rộng.)

git cherry-picklà nhằm đem về một cam đoan độc đáo trường đoản cú chiếc phát triển này thanh lịch mẫu cải cách và phát triển không giống. 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 được triển khai trên một nhánh cách tân và phát triển tạm thời qua một nhánh bình ổn (bảo trì), vấn đề này mergekhông tồn tại chân thành và ý nghĩa gì, bởi nó vẫn đem về không ít biến đổi không mong muốn.

Kể từ lần xuất hiện thêm trước tiên, git cherry-picksẽ rất có thể lựa chọn nhiều khẳng định cùng một thời điểm, từng cái một.

Xem thêm: Nghe Thấy Tiếng Mèo Kêu Ghê Rợn, Việc Cần Làm Ngay Khi Bị Chó, Mèo Cắn

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

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

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

*
Sách nói:

Tuy nhiên, tất cả một giải pháp khác: chúng ta có thể rước bản vá của biến hóa đã có được reviews trong C3 cùng áp dụng lại nó trên C4. Trong Git, vấn đề đó được Gọi là hồi phục. Với lệnh rebase, bạn cũng có thể thực hiện tất cả các biến hóa đã làm được khẳng định trên một nhánh với áp dụng bọn chúng mang lại nhánh không giống.

Trong ví dụ này, bạn sẽ chạgiống như sau:

$ git checkout experiment$ git rebase masterFirst, rewinding head to lớn trả lời your work on top of it...Applying: added staged command"Điểm nổi bật" 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) lúc đầu được tách ra khỏi nhánh "chính" với vì thế nó phân tách sẻ cam đoan từ bỏ C0 đến C2 với nó - một biện pháp kết quả, "demo nghiệm" là " master "lên tới mức, với bao gồm, C2 cùng với khẳng định C3 ở trên nó. (Đây là ngôi trường thích hợp đơn giản độc nhất vô nhị rất có thể xảy ra; tất nhiên, "demo nghiệm" có thể chứa hàng chục cam đoan trên cửa hàng ban đầu của chính nó.)

Bây giờ git rebaseđược những hiểu biết địa thế căn cứ lại "demo nghiệm" vào mẹo hiện nay tại của "bậc thầy" cùng git rebasera mắt nhỏng sau:

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

Bây giờ đồng hồ quay lại thắc mắc của bạn. Nlỗi chúng ta cũng có thể thấy, tại chỗ này đích thực về mặt kỹ thuật git rebase cấy ghnghiền hàng loạt các cam đoan trường đoản cú "demo nghiệm" mang đến mẹo của "bậc thầy", vị vậy bạn có thể biết đúng mực rằng thực sự tất cả "một nhánh khác" trong quy trình này. Nhưng ý đó là khẳng định mẹo từ "test nghiệm" đã trở thành cam kết mẹo new trong "thử nghiệm", nó chỉ biến đổi đại lý của nó:

*

Một lần tiếp nữa, về khía cạnh nghệ thuật, chúng ta có thể nói rằng git rebaseở chỗ này vẫn phối hợp một trong những cam đoan nhất định từ bỏ "chủ" và vấn đề đó hoàn toàn đúng mực.