Git Cherry Pick dan Git Patch
- Categories:
- git
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
- git cherry-pick
- git patch
- git apply
- git am
- Generate a git patch for a specific commit
- Git: How to create and apply patches
- Tags:
- #git