+10

Git Cherry Pick siêu tốc - Khi branch cần merge có commit không mong muốn

Hãy nhìn vào bức hình sau: Screenshot 2023-09-17 at 21.10.10.png

Đã bao giờ bạn gặp tình trạng, cái branch đang cần merge (lmao) có xuất hiện commit không mong muốn? Bạn (hoặc khách hàng) thay đổi ý định và không muốn giữ commit "f28e89b" nhưng muốn giữ hai commit phía trên là "5cda8cc" và "04a29d4". Bạn phải làm làm như thế nào?

"Hay là bây giờ mình tạo một cái branch khác, copy sự thay đổi của từng file trong từng commit một, rồi merge sau?" - mình suy nghĩ. Đang copy từng file, từng commit một thì ông đồng nghiệp mình đi ngang qua. Thấy thế, hắn gõ đầu mình một phát, bảo đang làm quần què gì vậy, hất tay mình ra và phô diễn một thứ ma thuật:

GIT CHERRY PICK.

Hắn mở Git graph lên (ở hình dưới đây là Sourcetree, Android Studio cũng có nhé). Hắn hỏi: "Giờ chú muốn lấy commmit nào?". "this commit ok 1this commit ok 2" - mình trả lời. Nói rồi, hắn bấm chuột phải vào commit mình chọn, rồi chọn chữ Cherry Pick:

Screenshot 2023-09-17 at 23.55.34.png

Kết quả:

Screenshot 2023-09-17 at 21.14.49.png

Chà, bây giờ thì this commit ok 1 đã xuất hiện ở branch nvbien mà không cần mình phải copy paste từng đoạn code ở từng file một. Ảo thật!

"OK vậy bây giờ, tôi có N commit liên tiếp mà tôi muốn giữ lại, giờ tôi phải dùng tay pick từng cái commit một hả?". Ví dụ, hình bên dưới mình có 3 commit muốn giữ lại là this commit ok 1 (5cda8cc), this commit ok 2 (04a29d4) và this commit ok 3 (f48a7c1).

Screenshot 2023-09-17 at 21.26.30.png

Lúc này thì ta sẽ dùng cú pháp sau:

git cherry-pick 5cda8cc^...f48a7c1 #DO NOT MISS ^ CHARACTER

Kết quả thu được:

Screenshot 2023-09-17 at 21.30.19.png

Trong quá trình làm việc của mình thì mình chỉ dùng có nhiêu vậy thôi. Còn khá nhiều chức năng khác của Git Cherry Pick nhưng mình chưa cần dùng đến. Các bạn có thể tham khảo ở Atlassian, Git SCM hoặc Viblo.

P/S: Android Studio Git cũng có chức năng cherry pick, và giao diện của nó trông như thế này:

Screenshot 2023-09-18 at 00.13.33.png

P/S 2: Cảm tạ bạn Phạm Anh Đức đã chỉ cho skill này.


Một số series mình đang thực hiện:


Mình cảm thấy rất vui nếu những bài viết này góp phần vào sự phát triển của cộng đồng developer Việt Nam. Nếu bạn cảm thấy chúng hữu ích và muốn ủng hộ mình, bạn có thể mua cho mình 1 cây bút bi tại thông tin phía dưới. Sự ủng hộ của mọi người là nguồn động lực để mình ra nhiều bài viết chất lượng hơn trong tương lai. Mình xin cảm ơn!

Ủng hộ mình 1 cây bút bi:

  • Tên người nhận: Nguyễn Văn Biên
  • Tài khoản VietinBank: 0835465951
  • MoMo: 0835465951

Thank you bro

Rất cảm ơn sự ủng hộ của bạn!


All Rights Reserved

Viblo
Let's register a Viblo Account to get more interesting posts.