Git Cherry-Pick Komutu ile Commit Taşıma Rehberi

Git cherry-pick komutunu kullanarak, tüm bir branch'i birleştirmeden sadece belirli commit'leri mevcut branch'inize nasıl aktaracağınızı öğrenin.

L
Linuxize
19 görüntülenme
Git Cherry-Pick Komutu ile Commit Taşıma Rehberi

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 --oneline

Ardı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^..B

Bu 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:

  1. Çakışan dosyaları düzenleyerek gerekli düzeltmeleri yapın.
  2. Dosyaları hazırlama alanına ekleyin: git add <dosya>
  3. İşlemi devam ettirin: git cherry-pick --continue
  4. 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.

Kaynak

Linuxize