Giriş
Git dünyasında bazen bir değişiklik zaten yazılmış ancak yanlış branch'e gönderilmiş olabilir. git cherry-pick, belirli bir commit'in etkisini mevcut branch'inize kopyalamanıza olanak tanır. Bu yöntem, tüm branch'i birleştirmek istemediğiniz durumlarda hayat kurtarıcıdır.
Temel Kullanım
Bir commit'i cherry-pick yapmak için öncelikle ilgili commit'in hash değerini bulmanız gerekir:
git log --onelineArdından, değişikliği uygulamak istediğiniz hedef branch'e geçin:
git switch main
git cherry-pick <commit-hash>Not: Cherry-pick işlemi, orijinal commit'i değiştirmez; bunun yerine aynı değişikliklere sahip, ancak farklı bir hash değerine sahip yeni bir commit oluşturur.
Çoklu Commit ve Aralıklar
Birden fazla commit'i ardışık olarak uygulamak için aralık belirtebilirsiniz:
git cherry-pick A^..BBu komut, A ile B arasındaki tüm commit'leri (A dahil) alır. Eğer A'yı hariç tutmak isterseniz A..B sözdizimini kullanın.
Çakışmaların (Conflict) Çözümü
Eğer cherry-pick sırasında bir çakışma oluşursa, Git işlemi durdurur. Çözüm adımları şöyledir:
- Çakışan dosyaları düzenleyerek gerekli düzeltmeleri yapın.
- Dosyaları hazırlama alanına ekleyin:
git add <dosya> - İşlemi devam ettirin:
git cherry-pick --continue - Eğer vazgeçerseniz:
git cherry-pick --abort
İleri Düzey İpuçları
-x Bayrağı: Backport işlemlerinde, değişikliğin nereden geldiğini takip etmek için -x parametresini kullanın. Bu, commit mesajına "(cherry picked from commit ...)" ibaresini ekler.
--no-commit: Değişiklikleri hemen commit etmeden çalışma alanınıza almak için -n parametresini kullanın. Bu, birden fazla commit'i tek bir commit altında birleştirmek istediğinizde oldukça faydalıdır.
Ne Zaman Kullanılmalı?
- Main branch'teki bir hata düzeltmesini (hotfix) eski bir sürüm branch'ine aktarırken.
- Terk edilmiş bir feature branch'inden sadece gerekli olan bir özelliği alırken.
- Yanlış branch'e atılan bir commit'i doğru yere taşırken.
Eğer commit'ler birbirine çok bağımlıysa, cherry-pick yerine merge veya rebase kullanmak daha sağlıklı olabilir.



