12/08/2018, 17:35

Hướng dẫn git cherry-pick

Trường hợp sử dụng? Giả sử bạn có 2 branches khác nhau, branch A và branch B . Và bạn đang fix một bug nghiêm trọng cùng tồn tại trên hệ thống và bạn muốn commit một lần nhưng có thể apply vào luôn cho cả 2 branches. Bạn có thể dùng lệnh cherry-pick của Git để giải quyết, như sau: // Ở ...

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

Giả sử bạn có 2 branches khác nhau, branch A và branch B. Và bạn đang fix một bug nghiêm trọng cùng tồn tại trên hệ thống và bạn muốn commit một lần nhưng có thể apply vào luôn cho cả 2 branches.

Bạn có thể dùng lệnh cherry-pick của Git để giải quyết, như sau:

// Ở branch A
git add -A
git commit -m "Fix typo bug"

// Ở branch B
git checkout B
git cherry-pick A

Cherry-pick sẽ lấy commit cuối cùng ở branch A merge vào branch B. Ngoài ra, bạn còn có thể chỉ định danh sách các commit cần "bốc" từ A để "bỏ" vào B nếu cần thiết.

Định Nghĩa

cherry-pick thực chất là một cách để checkout một commit tại branch nhất định về branch hiện tại. Hay nói một cách dân dã thì cherry-pick dùng để bưng các thay đổi trong một commit trên một nhánh nào đó áp dụng về nhánh hiện tại. vd: Bang dang dung o branch task/user va co commit latest nhu sau. Ban muon checkout commit daf0e220d46dde3d05db0fc631233d1fa72627ee vao branch master.

commit 1200fd18742e2e03d8384e27e88cc7b0bc384018
Author: Long Tran <nhulongctk10@gmail.com>
Date:   Wed Apr 18 00:26:52 2018 +0700

    Update display field for show list, create, update users.

commit daf0e220d46dde3d05db0fc631233d1fa72627ee
Author: Long Tran <nhulongctk10@gmail.com>
Date:   Tue Apr 17 00:57:05 2018 +0700

    Update path image upload, path response of upload.

commit a4ef31ef91b1ace36f4c45f608282cfe4ac4f214
Author: Long Tran <nhulongctk10@gmail.com>
Date:   Sun Apr 15 21:19:55 2018 +0700

    Update reducers of Users

commit a7c511e03b428f9fd6902a9e00ca3f7e03b41980
Author: Long Tran <nhulongctk10@gmail.com>
Date:   Sun Apr 15 19:55:30 2018 +0700

    Implement function list, create, edit in page admin Users.

Truoc het bạn cần checkout về nhánh master:

git checkout master

Và sau đó thực hiện việc pick:

 git cherry-pick daf0e220d46dde3d05db0fc631233d1fa72627ee

Chi tiết

Để tìm hiểu thêm thông tin về git cherry-pick, mọi người có thể tham khảo thêm tại đây

0