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

Jika dalam satu repositori yang sama dan beda git branch, bisa menggunakan git cherry-pick. Jika berbeda repositori bisa 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