Dalam pengembangan perangkat lunak dan menggunakan git sebagai version control, ada kalanya kita memasang git commit tertentu, misal sebagai hotfix.

Perintah git cherry pick adalah perintah untuk memasang suatu commit dalam repository yang sama dan berbeda git branch. Sedangkan git patch adalah perintah untuk ingin memasang git commit dari berbeda repository atau ingin export git commit dalam bentuk file untuk kemudian dikirim via email.

Sederhananya git cheery pick digunakan jika repositori yang sama dan beda git branch. Sedangkan jika ingin export git commit atau pasang git commit beda repositori menggunakan git patch.

Dalam melakukan git cherry-pick, cukup dengan menjalankan perintah berikut:

git cherry-pick <COMMIT_HASH>

Sedangkan dalam git patch, perlu beberapa langkah yaitu membuat patch, verifikasi patch dan memasang patch.

Membuat Patch

Membuat patch bisa dengan menggunakan git format-patch.

git format-patch -1 <COMMIT_HASH>

# atau
git format-patch -1 HEAD

# atau
git format-patch <COMMIT_HASH>~1..<COMMIT_HASH>

Berdasarkan dokumentasi git format-patch, -1 merupakan jumlah git commit dari paling atas. Jika ingin sebanyak lima commit, maka diganti dengan -5.

git format-patch -5 HEAD

Contoh file yang dibuat git format-patch.

0001-refactor-typography.patch

Verifikasi Patch

Menjalankan git apply --stat akan menampilkan tampilan seperti git diff.

git apply --stat 0001-refactor-typography.patch

Menjalankan git apply --check akan melakukan verifikasi apakah patch bisa dipasang, berikut tampilan jika git patch tidak bisa dipasang.

git apply --check 0001-refactor-typography.patch
error: patch failed: _sass/_dekyll.scss:180
error: _sass/_dekyll.scss: patch does not apply

Memasang Patch

Ada dua cara memasang patch, dengan git apply dan git am. Perbedaannya adalah git apply akan membuat commit baru sedangkan git am akan memasang patch apa adanya.

git apply 0001-refactor-typography.patch

# atau
git am 0001-refactor-typography.patch

# atau jika memiliki banyak patch
git am *.patch

Referensi