Burada isteyeceğiniz temel şey git add -p( -peşanlamlısıdır --patch). Bu, içeriği kontrol etmek için etkileşimli bir yol sağlar, her bir parçanın girip girmeyeceğine karar vermenize ve hatta gerekirse yamayı manuel olarak düzenlemenize izin verir.
Kiraz toplama ile birlikte kullanmak için:
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!
(Git-cherry-pick'un bir -no-taahhüt seçeneği olduğunu hatırlattığı için Tim Henigan'a ve sıfırlamanız gerektiğini işaret ettiği için Felix Rabe'ye teşekkürler! , git reset <path>...yalnızca bu dosyaları açmak için kullanabilirsiniz .)
Elbette add -pgerekirse belirli yollar da sağlayabilirsiniz . Eğer bir yama ile başlayan ediyorsanız yerini alabilir cherry-pickile apply.
Gerçekten istiyorsanız git cherry-pick -p <commit>(bu seçenek mevcut değildir),
git checkout -p <commit>
Bu, mevcut taahhüdü belirttiğiniz taahhüde göre farklılaştıracak ve bu farktan öfkeleri ayrı ayrı uygulamanıza izin verecektir. Bu seçenek, çekmekte olduğunuz taahhüt, ilgilenmediğiniz taahhüdün bir kısmında çakışmaları içeriyorsa daha yararlı olabilir. (Bununla birlikte, aşağıdakilerden checkoutfarklıdır cherry-pick: içeriğini tamamen checkoutuygulamaya çalışır , fark Bu, yalnızca bu taahhütten daha fazlasını uygulayabileceğiniz anlamına gelir; bu , istediğinizden daha fazla olabilir.)<commit>cherry-pickcheckout