Chào các bạn đã đến với chủ đề tiếp theo của mình. Như các bạn đã biết, Git là một hệ thống quản lý phiên bản phổ biến được sử dụng rộng rãi trong quá trình phát triển phần mềm. Trong quá trình làm việc với Git, thông thường chúng ta thường merge tất cả các commit vào nhánh khác. Nhưng đôi khi chúng ta cần áp dụng các commit đơn lẻ từ một nhánh (branch) khác vào nhánh hiện tại. Trong trường hợp này, Git cherry-pick là một công cụ quan trọng giúp chúng ta thực hiện việc này một cách dễ dàng. Trong bài viết này, chúng ta sẽ tìm hiểu về cách sử dụng Git Cherry Pick cùng với một số ví dụ minh họa.
Nội dung
1. Git cherry-pick là gì?
Git cherry-pick là một trong những lệnh trong Git giúp chúng ta chọn lọc và áp dụng các commit cụ thể từ một nhánh khác vào nhánh hiện tại. Điều này cho phép chúng ta lấy những thay đổi cần thiết từ các commit riêng lẻ và áp dụng chúng vào dự án của mình mà không cần merge toàn bộ nhánh đó.
Vì dụ như trong hình trên, mình có 2 nhánh Feature và Master, ở nhành Feature mình có 2 commit C3 và C5. Nhưng vì 1 lý do nào đó, mình không muốn merge cả C3 và C5 vào nhánh Master, mà chỉ muốn merge only nhánh C3. Thì lúc này, mình sẽ dùng kỹ thuật cherry pick.
Đọc tới đây thì có lẽ là các bạn có thể hiểu được sự khác nhau giữa git merge/rebase và git cherry pick rồi đúng không? Về git cherry pick thì mình đã giải thích rõ ở ví dụ trên rồi, nên mình không nhắc lại nữa. Còn git merge/rebase thì nó sẽ đem toàn bộ commit C3 & C5 vào nhánh Master.
2. Cách sử dụng git cherry-pick
Để sử dụng Git cherry-pick, chúng ta cần làm theo các bước sau đây:
Bước 1: Xác định commit nào để merge. Ví dụ như mình đang làm việc trên branch cherry_pick và có 2 commit B3 và C4.
Để xác định commit nào để merge, đầu tiên mình phải biết id của nó. Mỗi lần bạn commit, nó sẽ sinh ra 1 ID tương ứng. Có 1 số cách để get ID của commit như sau:
- Cách 1: Dùng lệnh git log –oneline. Con số ở phía sau có nghĩa là bạn muốn lấy get số lần commit gần nhất. Ví dụ như bạn có 10 commit, nhưng bạn chỉ muốn get log của 5 commit gần nhất, thì bạn input là -5
git log --oneline -5
- Cách 2: Vào branch cherry_pick trên GitHub, mở lịch sử commit của branch này. ID của commit sẽ hiển thị ở đây
Bước 2: Chuyển đến nhánh chúng ta muốn commit. Ví dụ ở đây mình sẽ commit vào nhánh main (vì trên GitHub ko có nhánh master)
git checkout main
Bước 3: Bắt đầu cherry pick nhé. Ví dụ ở đây mình chỉ muốn merge commit B3 vào nhánh main. Ở bước 2, mình đã biết được ID của commit B3 là ed5cac2. Bây giờ, mình sẽ dùng câu lệnh sau:
git cherry-pick ed5cac2
Đây là lịch sử của nhánh main trước khi cherry-pick:
Còn đây là của nhánh main trước khi cherry-pick. Cách bạn có thể thấy commit B3 trên nhánh cherry_pick đã được merge vào nhánh main
Bước 4: Nếu ở bước 3 có xảy ra conflict thì mình sẽ tiến hành resolve conflict cho nó. Các bạn có thể xem lại bài trước nhé.
Sau khi đã cherry-pick thành công. Bây giờ bạn hãy dùng câu lệnh git push để push code lên remote repository nhé.
3. Cherry pick nhiều commit
Nếu bạn muốn cherry pick nhiều commit cùng 1 lúc, bạn có thể dùng cú pháp sau:
git cherry-pick commit_id_1 commit_id_2 commit_id_3
Nếu muốn thêm 1 loạt commit lần lượt cạnh nhau (ví dụ 5 commit liên tục):
git cherry-pick commit_id_1...commit_id_5
4. Lời kết
Git Cherry Pick là một công cụ mạnh mẽ trong quá trình làm việc với Git, cho phép chúng ta áp dụng các commit đơn lẻ từ một nhánh khác vào nhánh hiện tại. Bằng cách sử dụng Git Cherry Pick, bạn có thể lấy những thay đổi cần thiết từ các commit riêng lẻ và áp dụng chúng vào dự án của mình một cách dễ dàng và linh hoạt. Hy vọng rằng bài viết này đã giúp bạn hiểu rõ hơn về Git Cherry Pick và cách sử dụng nó trong công việc hàng ngày của mình.
Nguồn tham khảo:
https://ntcde.com/web-development/git-cherry-pick-la-gi-cach-su-dung-va-vi-du.html