Trik Untuk Cherry-Picking Fitur Dari Cabang Tertentu
Terkadang, kita butuh melakukan pindah base untuk cabang fitur. Misalnya, tadinya kita membuat fitur dari base dev tetapi kemudian diputuskan semua fitur harus dimulai dari base main. Maka mau tak mau kita harus melakukan cherry-pick atas fitur-fitur itu dari base dev dan dipindah ke base main.
Pertama, project manager atau developer harus selalu mencatat / melacak cabang-cabang dan commit-commit terkait fitur tersebut;
Kedua, dari git log, lacak saat cabang fitur digabung (merge) dengan branch.
git log --first-parent
Saya biasanya lebih suka menyimpannya dalam bentuk file.
git --no-pager --first-parent > nama_git_log_sesuka_hati.log
Ketiga, catat commit-commit saat merge dan catat pula merge sebelumnya.
Keempat, buat salinan direktori project untuk referensi. Karena terkadang saat cherry-picking, ada konflik di mana kita terpaksa melihat referensi perbedaan antara commit merge dengan commit sebelumnya.
Kelima, buat cabang baru dari base baru yang akan dijadikan cabang fitur.
Misalnya, untuk bikin branch baru dengan main sebagai base:
git checkout main
git checkout -b feature/new-feature
Kelima, lakukan cherry-pick
git cherry-pick -m 1 <nomor commit>
Umumnya, kita cherry-pick dari parent pertama sehingga biasanya parameter -m selalu 1.
Keenam, jika terjadi konflik, lakukan merge dengan teliti. Saya biasanya pakai tools meld ( https://meldmerge.org/ ).
git mergetool -t meld
Jika ragu, lihat referensi dari salinan direktori yang kita buat di langkah keempat.
cd copy-project
git difftool -t meld <commit merge> <commit sebelumnya> -- <nama file>
Ketujuh, coba compile dan jalankan semua unit test untuk memastikan semua berjalan baik-baik saja.
Kedelapan, jika ada file yang kurang, lacak dari branch merge mana file tersebut ditambahkan.
Kesembilan, jika yakin, silakan commit untuk menuntaskan cherry-pick.
git commit
jika tak yakin, silakan abort
git cherry-pick --abort
Selamat mencoba.
0 comments:
Post a Comment