Burada isteyeceğiniz temel şey git add -p
( -p
eş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 -p
gerekirse belirli yollar da sağlayabilirsiniz . Eğer bir yama ile başlayan ediyorsanız yerini alabilir cherry-pick
ile 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 checkout
farklıdır cherry-pick
: içeriğini tamamen checkout
uygulamaya ç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-pick
checkout