Cherry-Pick

Git nâng cao

Amanda Crawford-Adamo

Software and Data Engineer

Cherry-pick là gì?

Áp dụng thay đổi từ một commit cụ thể sang nhánh khác

Cherry-pick một commit

git cherry-pick <commit-hash>

Cherry-pick nhiều commit

git cherry-pick <hash1> <hash2> ..

Mục đích

  • Áp dụng bản vá lỗi cụ thể qua các nhánh
  • Hoàn tác tính năng về bản ổn định
  • Chọn lọc áp dụng thay đổi thử nghiệm
  • Khôi phục commit bị mất
Git nâng cao

Ví dụ cherry-pick

Biểu đồ nhánh main và feature. Main có hai commit. Nhánh feature tách từ main sau commit cuối.

Hai hình cho thấy log của nhánh main và feature trước khi cherry-pick.

Git nâng cao

Quy trình cherry-pick

  1. Checkout nhánh main

    git checkout main
    
  2. Chạy cherry-pick để lấy thay đổi của commit def456 từ nhánh feature.

    git cherry-pick def456
    

Biểu đồ hai nhánh main và feature. Main có ba commit. Feature tách từ main sau commit thứ hai và có thêm hai commit. Commit thứ ba của main là cherry-pick từ commit cuối của feature.

Git nâng cao

Giải quyết xung đột khi cherry-pick

Các bước xử lý xung đột
  1. Chỉnh sửa thủ công các tệp xung đột
  2. Thêm các tệp đã xử lý vào staging bằng git add <resolved-files>
  3. Tiếp tục cherry-pick với cờ --continue
git cherry-pick --continue
Dừng cherry-pick

Để dừng thao tác, dùng cờ --abort

git cherry-pick --abort
Git nâng cao

Khi nào dùng cherry-pick

Trường hợp sử dụng

  1. Áp dụng hotfix
  2. Thử nghiệm tính năng riêng lẻ

Lưu ý

  1. Có thể tạo commit trùng lặp
  2. Lạm dụng sẽ làm rối lịch sử dự án
  3. Thay đổi lớn: cân nhắc merge hoặc rebase
Git nâng cao

Ayo berlatih!

Git nâng cao

Preparing Video For Download...