- vừa được xem lúc

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

0 0 9

Người đăng: Nguyễn Văn Biên

Theo Viblo Asia

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:

Bình luận

Bài viết tương tự

- vừa được xem lúc

Đặt tên commit message sao cho "tình nghĩa anh em chắc chắn bền lâu"????

. Lời mở đầu. .

1 1 701

- vừa được xem lúc

Tập hợp những câu lệnh GIT hữu dụng

Dưới đây là một vài ví dụ về các câu lệnh Git mà tôi thường dùng. git config --global user.name "John Doe". git config --global user.

0 0 55

- vừa được xem lúc

Cấu hình CI/CD với Github (phần 2): Trigger một work flow

Events trigger. Bạn có thể cấu hình cho workflows chạy khi có một sự kiện nào đó xảy ra trên GitHub, theo một lịch có sẵn hoặc cũng có thể là một sự kiện nào đó xảy ra ngoài GitHub.

0 0 70

- vừa được xem lúc

Cấu hình CI/CD với Github (phần 1): Một ít lý thuyết

CI/CD là gì. Về mặt khái niệm là vậy nhưng về mặt triển khai thì CI/CD là quá trình tự động thực hiện các quá trình build, test, release, deploy khi có các trigger như commit/merge code lên một branch định sẵn hoặc có thể là tự động chạy theo một lịch cố định.

0 0 118

- vừa được xem lúc

Giới thiệu về Git LFS

. Git LFS là gì . Git LFS làm điều này bằng cách thay thế các tệp lớn trong repo của bạn bằng một con trỏ nhỏ.

0 0 29

- vừa được xem lúc

Git workflow được Google và Facebook sử dụng có gì hay ho

Với developer thì Git hẳn là công cụ rất quen thuộc và không thể thiếu rồi. Thế nhưng có mấy ai thực sự hiểu được Git.

0 0 66