Hôm nay, tôi đã gặp một trường hợp mà tôi cần áp dụng cùng một thay đổi (cam kết a) cho cả hai nhánh của dự án của mình. chi tiết sẽ như sau: Tôi đang viết một hàm a, và hàm này cần được áp dụng cho 2 nhánh (ví dụ nhánh x và nhánh y). và tôi chỉ muốn có 1 cam kết, nhưng nó sẽ áp dụng cho cả hai nhánh x và y.

Trong một trường hợp khác: Giả sử tôi đang thực hiện chức năng quản lý người dùng (người dùng crud tương ứng sẽ có 4 lần cam kết) trong người dùng quản lý chi nhánh. Đột nhiên, khách hàng yêu cầu phát hành khẩn cấp chức năng hiển thị người dùng. có nghĩa là tôi cần hợp nhất mã cam kết của người dùng hiển thị vào mã nhánh.

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

đôi khi, chúng tôi chỉ muốn nhận 1 hoặc n cam kết từ 1 chi nhánh trên chính hoặc cam kết 1 lần và chuyển đến 2 chi nhánh , vì vậy bạn nghĩ gì là hợp nhất git hay rebase đôi khi là thừa.

tại sao tôi lại nói như vậy ?:

còn git rebase / merge thì sao? vì đối với hợp nhất git, git sẽ áp dụng các thay đổi cam kết mới nhất cho nhánh bạn muốn hợp nhất. rõ ràng hơn, hãy xem các ví dụ và mô tả cụ thể:

Xem thêm: Dhcp là gì? tìm hiểu về dhcp?

Tôi cần hợp nhất các thay đổi trong chức năng branch-a và branch-master

Với lệnh này, git sẽ lấy tất cả các thay đổi trong cam kết c3 từ brach feature-a trong branch master. tức là git merge và git rebase thường được áp dụng để chuyển các thay đổi từ nhiều commit sang một nhánh khác. vì vậy rõ ràng không thể giải quyết git merge hoặc git rebase .

Để giải quyết 2 trường hợp trên, chúng ta sẽ nghe kỹ thuật hỗ trợ git git cherry-pick

là một cách để kiểm tra bất kỳ cam kết nào trên một nhánh cụ thể đối với nhánh hiện tại. hay git cherry-pick sẽ nhận các thay đổi từ một cam kết trên một nhánh nhất định và áp dụng chúng cho nhánh hiện tại?

cú pháp

hãy xem xét một hoạt động cụ thể:

lấy 1 cam kết từ 1 chi nhánh và đưa nó lên chế độ chính

nó quá đơn giản, điều đó có nghĩa là chúng tôi đã bao gồm các thay đổi cam kết c2 từ tính năng nhánh-a trong nhánh chính

nhận n cam kết từ 1 nhánh và đưa nó lên vị trí chính

Xem thêm: [ VẠCH TRẦN ] Viên uống Gercoles Gold có tốt thật hay không ? Thành phần giá bán

giả sử bây giờ tôi cần đặt n cam kết (giả sử có 2 cam kết ở đây), thì tôi thực hiện như sau:

1 cam kết cho cả hai nhánh

cam kết nhu cầu để yêu cầu 2 nhánh, nhánh-x và nhánh-y

với lệnh này, cherry-pick sẽ lấy cam kết mới nhất trong nhánh branch-x và hợp nhất nó vào nhánh branch-y

khắc phục xung đột

Giống như git merge hoặc rebase, git cherry-pick cũng xung đột nếu mã xung đột. công việc của chúng tôi chỉ là khắc phục xung đột và sau đó sử dụng:

vậy là xong.

Bài viết được tham khảo từ nhiều nguồn, trong đó có nguồn chính: https://git-scm.com/docs/git-cherry-pick & amp; https://backlog.com/git-tutorial/en/stepup/stepup7_4.html

Xem thêm: Lập kế hoạch (Planning) là gì? Vai trò và qui trình lập kế hoạch

Leave a Reply

Your email address will not be published. Required fields are marked *