Git Cherry Pick

git cherry-pick là một lệnh mạnh mẽ cho phép Git tùy ý cam kết được chọn bằng cách tham chiếu và gắn vào ĐẦU làm việc hiện tại. Chọn anh đào là hành động chọn một cam kết từ một chi nhánh và áp dụng nó cho người khác. git cherry-pickcó thể hữu ích cho việc hoàn tác thay đổi. Ví dụ, giả sử một cam kết được thực hiện sai cho nhánh. Bạn có thể chuyển sang nhánh chính xác và chọn cam kết đến nơi cần thuộc.

Khi nào nên dùng git cherry pick

git cherry-pick là một công cụ hữu ích nhưng không phải lúc nào cũng là một thực hành tốt nhất. Chọn anh đào có thể gây ra các cam kết trùng lặp và nhiều tình huống trong đó việc hái anh đào sẽ hoạt động, thay vào đó, việc hợp nhất truyền thống được ưu tiên hơn. Với điều đó đã nói git cherry-picklà một công cụ tiện dụng cho một vài tình huống …

Hợp tác nhóm.

Thông thường, một nhóm sẽ tìm thấy các thành viên cá nhân làm việc trong hoặc xung quanh cùng một mã. Có thể một tính năng sản phẩm mới có thành phần phụ trợ và frontend. Có thể có một số mã được chia sẻ giữa hai lĩnh vực sản phẩm. Có thể nhà phát triển phụ trợ tạo ra một cấu trúc dữ liệu mà frontend cũng sẽ cần sử dụng. Nhà phát triển lối vào có thể sử dụng git cherry-pickđể chọn cam kết trong đó cấu trúc dữ liệu giả định này được tạo. Lựa chọn này sẽ cho phép nhà phát triển lối vào tiếp tục tiến triển về phía dự án của họ.

Lỗi hotfix

Khi một lỗi được phát hiện, điều quan trọng là cung cấp một bản sửa lỗi cho người dùng cuối càng nhanh càng tốt. Đối với một kịch bản ví dụ, giả sử một nhà phát triển đã bắt đầu làm việc trên một tính năng mới. Trong quá trình phát triển tính năng mới, họ xác định một lỗi đã tồn tại từ trước. Nhà phát triển tạo ra một cam kết rõ ràng vá lỗi này. Bản vá lỗi mới này có thể được chọn trực tiếp đến masterchi nhánh để sửa lỗi trước khi nó ảnh hưởng đến nhiều người dùng hơn.

Hoàn tác các thay đổi và khôi phục các cam kết bị mất

Đôi khi một featurechi nhánh có thể bị cũ và không được sáp nhập vào master. Đôi khi một yêu cầu kéo có thể bị đóng mà không hợp nhất. Git không bao giờ mất những cam kết đó và thông qua các lệnh như git logvà git reflogchúng có thể được tìm thấy và anh đào đã sống lại.

Cách sử dụng git cherry pick

Để giải thích cách sử dụng, git cherry-pickchúng ta hãy giả sử rằng chúng ta có một kho lưu trữ với trạng thái nhánh sau:

 a - b - c - d   Master
         \
           e - f - g Feature

git cherry-pick sử dụng là thẳng về phía trước và có thể được thực hiện như:

git cherry-pick commitSha

Trong ví dụ này commitSha là một tài liệu tham khảo cam kết. Bạn có thể tìm thấy một tài liệu tham khảo cam kết bằng cách sử dụng git log. Trong ví dụ này, chúng tôi đã xây dựng cho phép chúng tôi muốn sử dụng commit `f` in master. Đầu tiên chúng tôi đảm bảo rằng chúng tôi đang làm việc trên masterchi nhánh.

git checkout master

Sau đó, chúng tôi thực hiện chọn cherry bằng lệnh sau:

git cherry-pick f

Sau khi thực hiện lịch sử Git của chúng tôi sẽ như sau:

a - b - c - d - f   Master
         \
           e - f - g Feature

Cam kết f đã được chọn thành công vào nhánh tính năng

Ví dụ về git cherry pick

 git cherry pick cũng có thể được thông qua một số tùy chọn thực hiện.

-edit

Vượt qua -edittùy chọn sẽ khiến git nhắc nhở thông báo cam kết trước khi áp dụng thao tác chọn cherry

--no-commit

Các --no-committùy chọn sẽ thực hiện cherry chọn nhưng thay vì thực hiện một cam kết mới nó sẽ di chuyển các nội dung của mục tiêu cam kết vào thư mục làm việc của chi nhánh hiện hành.

--signoff

Các --signofftùy chọn sẽ thêm một ‘signoff’ dòng chữ ký vào cuối cherry chọn thủ phạm nhắn

Ngoài các tùy chọn hữu ích này git cherry-pickcũng chấp nhận nhiều tùy chọn chiến lược hợp nhất. Tìm hiểu thêm về các tùy chọn này tại  tài liệu chiến lược hợp nhất git .

Ngoài ra, git cherry-pick cũng chấp nhận đầu vào tùy chọn để giải quyết xung đột hợp nhất, điều này bao gồm các tùy chọn: --abort --continuevà --quitcác tùy chọn này được đề cập sâu hơn về liên kết git  và git rebase .

Tóm lược

cherry-pick là một lệnh mạnh mẽ và tiện lợi, cực kỳ hữu ích trong một vài tình huống. Việc cherry-pick không nên bị lạm dụng thay cho git merge  hoặc git rebase . Lệnh git log  được dùng để giúp tìm commit cherry-pick.

You may also like...

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *