# Cherry-pick

Adres: https://softwaredictionary.org/tr/terimler/cherry-pick
Kategori: Sürüm Kontrolü
Son güncelleme: 2026-09-30
Okunuşu: çeri pik

Kısaca: Git'te cherry-pick, belirli bir commit'in değişikliklerini geldiği branch'in geri kalanını birleştirmeden, mevcut branch'inize yeni bir commit olarak kopyalar.

## Git'te cherry-pick nedir?

Cherry-pick, deponuzun herhangi bir yerindeki tek bir commit'i alıp üzerinde bulunduğunuz branch'e uygulamanızı sağlar. Git, o commit'in neyi değiştirdiğini hesaplar ve mevcut branch'inizde aynı değişiklikleri ve mesajı içeren yeni bir commit oluşturur. Kaynak branch'in geri kalanına dokunulmaz.

Yaygın bir kullanım, bir düzeltmeyi eski sürüme taşımaktır (backport). Bir hata düzeltmesinin `main` üzerinde commit edildiğini ve bunu zaten canlıda olan bir `release/2.1` branch'inde de istediğinizi varsayalım: release branch'ine geçer ve düzeltmenin commit hash'iyle `git cherry-pick` çalıştırırsınız. Yanlış branch'te yapılmış bir commit'i kurtarmak ya da bitmemiş bir feature branch'inden tamamlanmış tek bir değişikliği almak için de kullanışlıdır.

Cherry-pick, arkadaşınızın yemek kitabının tamamını almak yerine yalnızca bir tarifi kendi kitabınıza kopyalamaya benzer. Kopyalanan commit, değişiklikleri birebir aynı olsa bile yeni bir hash'e sahip yeni bir commit'tir. Branch'ler arasında çevredeki kod farklıysa cherry-pick bir merge çakışması üretebilir; bunu her zamanki gibi çözer ve `git cherry-pick --continue` ile tamamlarsınız.

Cherry-pick, bir commit serisinin tamamını getiren merge ve rebase'ten farklıdır. Aşırı kullanımı, aynı değişikliğin branch'ler arasında birkaç farklı commit olarak bulunmasına yol açabilir; bu da geçmişin izlenmesini zorlaştırır ve ileride kafa karıştırıcı çakışmalara neden olabilir. Birçok ekip cherry-pick'i acil düzeltmeler (hotfix) ve backport'lar için ayırır ve yeni commit mesajının hangi commit'ten kopyalandığını kaydetmesi için `-x` seçeneğini ekler.

## Önemli noktalar

- `git cherry-pick <hash>` tek bir commit'in değişikliklerini mevcut branch'e uygular.
- Orijinali taşımak yerine yeni hash'e sahip yeni bir commit oluşturur.
- Düzeltmeleri release branch'lerine taşımak ya da yanlış yere yapılmış bir commit'i başka yere almak için yaygın olarak kullanılır.
- Çakışmalar merge çakışmaları gibi çözülür, ardından `git cherry-pick --continue` ile tamamlanır.
- Az kullanın; tüm branch'leri getirmek için merge ve rebase daha uygundur.

## Örnek: Cherry-pick ile bir düzeltmeyi eski sürüme taşımak

```bash
# Find the hash of the commit you want to copy
git log --oneline main
# a1b2c3d Fix crash when the cart is empty

# Switch to the branch that also needs the fix
git switch release/2.1

# Apply that one commit here (-x notes the original hash in the message)
git cherry-pick -x a1b2c3d

# If there's a conflict: fix the files, stage them, and continue
git add src/cart.ts
git cherry-pick --continue   # or: git cherry-pick --abort
```

## Sık sorulan sorular

**Cherry-pick ile merge arasındaki fark nedir?**

Merge, başka bir branch'teki her commit'i sizinkine getirir. Cherry-pick ise yalnızca seçtiğiniz belirli commit'leri kopyalar ve branch'inizde yeni commit'ler oluşturur.

**Birden fazla commit'i cherry-pick edebilir miyim?**

Evet. `git cherry-pick a1b2c3d e4f5a6b` örneğindeki gibi birkaç hash yazabilir ya da `A`'dan sonraki her commit'i `B` dahil olmak üzere uygulayan `git cherry-pick A..B` gibi bir aralık kullanabilirsiniz.

**Cherry-pick kötü bir uygulama mıdır?**

Kendi başına değil, ancak bilinçli kullanılmalıdır. Aynı değişikliği birçok branch'e cherry-pick etmek commit'leri çoğaltır ve geçmişi ile gelecekteki merge'leri kafa karıştırıcı hale getirebilir; bu yüzden en iyi, acil düzeltme ve backport gibi hedefli durumlarda işe yarar.

---

Software Dictionary: https://softwaredictionary.org/tr · https://softwaredictionary.org/tr/llms.txt
