Git Cherry-pick
Son güncelleme
git cherry-pick, bir veya daha fazla belirli commit'in değişikliklerini kopyalar ve bunları geçerli dalınıza yeni commit'ler olarak uygular. Tüm dalı birleştirmeden başka bir daldan tek bir düzeltme almanın yoludur - bir hotfix'i geriye taşımak veya bir özellik dalından tek bir commit çekmek için kullanışlıdır.
Bunları terminal playground'da deneyin - tarayıcınızda gerçek bir kabuk, kurulacak hiçbir şey yok.
Söz dizimi
| Command | What it does |
|---|---|
git cherry-pick <hash> | Geçerli dala bir commit uygular |
git cherry-pick <a> <b> | Birkaç commit'i sırayla uygular |
git cherry-pick <a>..<b> | Bir commit aralığı uygular (a hariç) |
git cherry-pick -n <hash> | Değişiklikleri uygular ama henüz commit'lemez |
git cherry-pick -x <hash> | Orijinal commit'i mesaja not eder |
Cherry-pick sırasında
Bir cherry-pick çakışmaya neden olursa, çözün ve devam edin.
| Command | What it does |
|---|---|
git cherry-pick --continue | Çakışmaları çözdükten sonra devam eder |
git cherry-pick --abort | İptal eder ve dalı geri yükler |
git cherry-pick --skip | Geçerli commit'i atlar |
Örnek uygulama
| Adım | Komut | Sonuç |
|---|---|---|
| 1 | git log --oneline hotfix | Düzeltmenin hash'ini bulun, örneğin a1b2c3d |
| 2 | git switch main | Düzeltmeyi alacak dala geçin |
| 3 | git cherry-pick a1b2c3d | Düzeltmeyi main dalına yeni hash'li yeni bir commit olarak uygular |
Git cherry-pick SSS
git cherry-pick ne yapar?
Belirli bir commit'in getirdiği değişiklikleri alır ve bunları geçerli dalınıza yepyeni bir commit (yeni bir hash ile) olarak uygular. Merge veya rebase'in aksine, tüm bir dalı getirmez - yalnızca adını verdiğiniz commit veya commit'leri getirir.
Cherry-pick'i ne zaman kullanmalıyım?
Başka bir yerde belirli bir commit'e ihtiyacınız olduğunda kullanın - örneğin, bir hata düzeltmesini
main dalından bir release dalına geriye taşımak veya bir özellik dalından her şeyi birleştirmeden tek bir yararlı commit çekmek için. Tüm dalı istiyorsanız bunun yerine merge veya rebase kullanın.Birden fazla commit'i nasıl cherry-pick yaparım?
Bunları listeleyin:
git cherry-pick <a> <b> <c> her birini sırayla uygular. Bitişik bir aralık için git cherry-pick <start>..<end> kullanın; bu, start'tan sonraki her commit'i end dahil olmak üzere uygular. start'ın kendisini de dahil etmek isterseniz <start>^..<end> ekleyin.Bir cherry-pick çakışmaya neden olursa ne olur?
Git duraklar ve çakışan dosyaları işaretler. Bunları çözün, sonuçları
git add ile ekleyin, ardından git cherry-pick --continue çalıştırın. Tamamen geri çekilmek için git cherry-pick --abort kullanın; bu, dalınızı cherry-pick başlamadan önceki duruma geri yükler.Başka bir daldan bir commit'i nasıl cherry-pick yaparım?
Commit'in hash'ini
git log --oneline <other-branch> ile bulun, onu alacak dala geçin ve git cherry-pick <hash> çalıştırın. git cherry-pick feature örneğindeki gibi bir dal adı da verebilirsiniz; bu, o dalın en ucundaki commit'i alır.Cherry-pick ile merge arasındaki fark nedir?
git merge bir daldaki her commit'i getirir ve geçmişlerin nerede birleştiğini kaydeder. Cherry-pick ise yalnızca adını verdiğiniz commit'leri, orijinallerine hiçbir bağlantı kurmadan yeni commit'ler olarak kopyalar. Dalın tamamını istediğinizde merge edin; bir iki commit istediğinizde cherry-pick yapın.
Bunu çevrimiçi olarak deneyebilir miyim?
Evet.
git cherry-pick komutunu tarayıcınızdaki gerçek bir kabukta çalıştırmak için terminal playground'u açın - kurulacak hiçbir şey yok. Coddy'nin ücretsiz etkileşimli Git kursu da commit'leri dallar arasında adım adım taşımayı kapsar.