Hal inti yang Anda inginkan di sini adalah git add -p
( -p
adalah sinonim untuk --patch
). Ini memberikan cara interaktif untuk memeriksa konten, memungkinkan Anda memutuskan apakah setiap bingkah harus masuk, dan bahkan membiarkan Anda mengedit tambalan secara manual jika perlu.
Untuk menggunakannya dalam kombinasi dengan cherry-pick:
git cherry-pick -n <commit> # get your patch, but don't commit (-n = --no-commit)
git reset # unstage the changes from the cherry-picked commit
git add -p # make all your choices (add the changes you do want)
git commit # make the commit!
(Terima kasih kepada Tim Henigan untuk mengingatkan saya bahwa git-cherry-pick memiliki opsi --no-commit, dan terima kasih kepada Felix Rabe karena menunjukkan bahwa Anda perlu mengatur ulang! Jika Anda hanya ingin meninggalkan beberapa hal dari komit , Anda dapat menggunakan git reset <path>...
untuk menghapus hanya file-file itu.)
Tentu saja Anda dapat memberikan jalur khusus add -p
jika perlu. Jika Anda memulai dengan tambalan, Anda bisa mengganti cherry-pick
dengan apply
.
Jika Anda benar-benar menginginkan git cherry-pick -p <commit>
(opsi itu tidak ada), Anda dapat menggunakannya
git checkout -p <commit>
Itu akan membedakan komit saat ini dengan komit yang Anda tentukan, dan memungkinkan Anda untuk menerapkan bakhil dari diff itu secara individual. Opsi ini mungkin lebih berguna jika komit yang Anda tarik memiliki konflik gabungan di bagian komit yang tidak Anda minati. (Namun, yang checkout
berbeda dari cherry-pick
: checkout
mencoba menerapkan <commit>
konten seluruhnya, cherry-pick
menerapkan perbedaan dari komit yang ditentukan dari orang tuanya. Ini berarti bahwa checkout
dapat menerapkan lebih dari sekedar komit itu, yang mungkin lebih dari yang Anda inginkan.)