Nhân ngày cuối năm, mình sẽ gửi tới các bạn bài viết về cách sử dụng git cherry-pick một cách hiệu quả nhất khi làm việc với git, git cherry-pick là một lệnh cực kì hữu ích mà bất kì một Engineer nào cũng nên biết và sử dụng thành thạo để công việc luôn luôn suôn sẻ cũng như dễ thở hơn.
Thử hình dung bạn và đồng nghiệp đang cùng phát triển trên một branch master chung, cả hai đều tạo ra hai branch release riêng cho mỗi tính năng của mình, về lý thuyết thì điều này là hợp lý, và nó tuân theo một git-flow chung.
Nhưng giả sử bạn cần sử dụng một code base chung với đồng nghiệp, nhưng code thì lại ở trên nhánh feature riêng của họ, lúc này bài toán đặt ra là bạn cần phải lấy một vài commit code từ nhánh của đồng nghiệp và ghép vào nhánh của bạn để tiếp tục phát triển trên cái base chung đó.
Cùng nhau đi vào cách sử dụng git cherry-pick như sau, trước tiên ta lấy code từ branch master
ra branch release/1.0.0
Sau đó đẩy file_1.txt lên branch release/1.0.0
, mục đích làm điều này để demo cho việc đây là code base chung như mình đã nói ở bên trên.
Sau đó tiếp tục đẩy file_2.txt lên branch release/1.0.0
để demo cho việc bổ sung code mới ở branch release/1.0.0
Ta kiểm tra lại trên gitlab thì branch release/1.0.0
lúc này đã có hai commit chúng ta vừa thực hiện.
Lưu ý cái commit_id ở bên phải hình trên nhé, nó dùng để lấy lại code theo commit_id
Giờ checkout code từ branch master
ra một branch release/1.0.1
mới, sau đó cherry-pick file_2.txt ở branch release/1.0.0
về, ta thực hiện như hình bên dưới:
Lúc này chúng ta đã lấy được code từ branch release/1.0.0
và bỏ sang branch release/1.0.1
, tiếp tục thực hiện tương tự với cái file_1.txt.
Ở trên chúng ta đã cùng nhau thực hiện xong việc lấy code từ một branch và apply code đó vào một branch khác sử dụng cherry-pick, đó là một cách thực hiện đơn giản và rất dễ làm, tuy nhiên trong quá trình làm việc sẽ có những bài toán khó nhằn hơn và bạn phải linh hoạt trong việc sử dụng cherry-pick, ví dụ một số case:
- Code bạn cần lấy nằm ở trên nhiều branch khác nhau, branch A bạn muốn lấy một số commit nhất đinh, branch B bạn lại muốn lấy một số commit khác, rồi tiếp tục branch C lại lấy thêm vài commit nữa
- Code của đồng nghiệp đang nằm trên branch A, và bạn chẳng may sử dụng branch A để code tiếp cho tính năng của bạn, và sau rất nhiều lượt commit code loạn xị ngậu và rắc rối thì bạn cần đưa code của bạn ra một branch B để không vướng với code của đồng nghiệp nằm trên branch A
Lúc này mình ngoài việc sử dụng linh hoạt cherry-pick, revert thì mình suggest thêm các bạn sử dụng một command nữa để lấy code theo commit_id:
git checkout <commit_id> <đường dẫn file bạn cần lấy>
Lệnh này cực kì hữu ích trong việc lấy code từ bất kì branch nào vào branch của bạn, bất kể file đó đã tồn tại trên branch của bạn hay chưa, chỉ cần nó thuộc commit_id đó thì bạn đều có thể lấy được.
Một số bài viết liên quan:
- Câu chuyện phỏng vấn online mùa Covid
- Active Jrebel để code trong IntellIJ IDEA
- Crack Intellij IDEA Ultimate version 2022
- Crack Intellij IDEA new versions 2021
- Crack IntellIJ để code như một senior
- 13 Plugin không thể thiếu khi làm việc với IntellIJ IDEA
- Shortcut Intellij hữu ích để làm việc được hiệu quả hơn
- Distributed Lock with Hazelcast and Spring
- How to build Rate Limit with Hazelcast and Spring Boot
- Build hệ thống Pub Sub dùng Hazelcast và Spring boot
- Build hệ thống Pub-Sub bằng Kafka+Spring boot (phần 3)
- Biết sử dụng git cherry-pick để làm việc hiệu quả hơn
- Git revert với Git reset hoạt động như thế nào?
- Git stash giúp bạn trở nên chuyên nghiệp như thế nào
- Câu chuyện phỏng vấn online mùa Covid
- Series tìm hiểu System Design
- Series tìm hiểu Hazelcast
- Series tìm hiểu lập trình java
- Series crack Intellij IDEA
- Series tìm hiểu Docker
- Series tìm hiểu Git
- Series tìm hiểu Kafka
- Series tìm hiểu ElasticSearch
- Series tìm hiểu Linux
- Series phỏng vấn kĩ sư phần mềm
- Series review sách