Ana içeriğe geç

Git Cherry-Pick: Belirli Commit’leri Seçme ve Uygulama

Adım adım örnekler, en iyi uygulamalar ve sorun giderme ipuçlarıyla git cherry-pick kullanımını öğrenin!
· 15 dk. oku

Yapay Zeka ile Keşfedin

İşbirliğine dayalı yazılım geliştirme ortamlarında dallarla çalışmak, özellikleri, hata düzeltmelerini veya denemeleri izole etmek için gereklidir. Ancak, bazen bir dalın tamamını birleştirmeden bir daldan belirli değişiklikleri alıp başka bir dala uygulamanız gerekir. İşte bu noktada git cherry-pick paha biçilmezdir. 

Bu eğitimin amacı, git cherry-pick aracını etkili bir şekilde nasıl kullanacağınıza dair kapsamlı bir rehber sunmaktır. Komutun söz dizimini öğrenecek, çakışmalarla nasıl başa çıkılacağını anlayacak ve kaçınılması gereken en iyi uygulamalar ile yaygın tuzakları keşfedeceksiniz. Hadi başlayalım!

Git Cherry-Pick Nedir?

git cherry-pick, geliştiricilere kaynak kodları üzerinde ince ayar denetimi sağlayan temel bir Git komutudur. 

Diğer Git işlemlerinin aksine, tüm dal üzerinde çalışan merge veya rebase gibi işlemlerden farklı olarak, cherry-pick bir daldan belirli commit’leri alıp başka bir dala uygulamanıza olanak tanır. Bu, özellikle bir daldaki tüm değişiklikler yerine yalnızca belirli değişiklikleri entegre etmeniz gereken senaryolarda hassasiyet sağlar.

git cherry-pick komutu, seçilen commit’lerin içeriğini kopyalayıp hedef dalda yeni commit’ler oluşturarak commit geçmişinin bütünlüğünü korur.

git cherry-pick ne zaman kullanılır

git cherry-pick için kullanım örnekleri şunlardır: 

  • Hata düzeltmelerini geriye taşımak (backport): Geliştirme dalınızda bir hatayı çözdünüz ve aynı düzeltmeye kararlı veya sürüm dalında da ihtiyaç var. Cherry-pick, alakasız değişiklikleri getirmeden hata düzeltmesini taşımanıza olanak tanır.
  • Acil düzeltmeler (hotfix) uygulamak: Üretim ortamı kritik bir düzeltme gerektirirken geliştirme dalları evrilmeye devam ediyorsa, cherry-pick düzeltmeyi ayıklayıp üretim dalına uygulamanızı sağlar.
  • Test için özelliği izole etmek: Test sırasında yalnızca bir özellikle ilgili belirli commit’lerin test edilmesi gerekebilir. Tüm özellik dalını birleştirmek yerine, gerekli commit’leri cherry-pick etmek test dalını temiz ve verimli tutar.
  • Yanlış konumlandırılmış commit’leri düzeltmek: Bir commit yanlışlıkla yanlış bir dala itilmişse, proje geçmişini bozmadan commit’i uygun dala cherry-pick edebilirsiniz.
  • Değişiklikleri birden çok dalda yeniden kullanmak: Aynı güncellemeye birden fazla dalda ihtiyaç duyulduğunda, cherry-pick işi yeniden yapmadan veya dal karmaşıklığı oluşturmadan değişiklikleri farklı dallarda çoğaltmanızı sağlar.

Git Cherry-Pick Söz Dizimi

git cherry-pick söz dizimini anlamak, bu komutu etkili kullanmanın anahtarıdır. Mesele sadece commit seçmek değil, istenen sonucu elde etmek için onları tam isabetle uygulamaktır.

Tek bir commit’i cherry-pick etmenin temel söz dizimi şöyledir:

git cherry-pick <commit-hash>
  • git cherry-pick: İşlemi başlatan komut.
  • <commit-hash>: Cherry-pick etmek istediğiniz commit’in benzersiz tanımlayıcısı (SHA-1 hash). Bu hash’i commit geçmişini listelemek için git log komutunu çalıştırarak bulabilirsiniz.

Yukarıdaki komutu çalıştırdığınızda, Git belirtilen commit’ten gelen değişiklikleri geçerli dala uygular ve aynı değişikliklere sahip ancak farklı hash’e sahip yeni bir commit oluşturur. 

Komutun yalnızca commit’in kendisini, orijinal daldaki bağlamı veya ebeveyn geçmişini değil, aktardığını unutmamak önemlidir.

Git ve GitHub’a yeni misiniz? Sürüm kontrolüne, yeni başlayanlar için hazırlanan şu GitHub ve Git eğitimi ile başlayın.

Git Cherry-Pick Nasıl Kullanılır: Adım Adım Örnekler

Artık git cherry-pick’in temel söz dizimini anladığınıza göre, komutu çalışırken görme zamanı geldi.

Bu bölüm, cherry-pick’in yararlı olduğu yaygın temel ve daha karmaşık senaryolarda size yol gösterecek uygulamalı örnekler sunar. Her örnek, bir veya daha fazla commit’ten gelen değişikliklerin başka bir dala nasıl uygulanacağını gösterir. 

Örnek 1: Tek bir commit’i cherry-pick etmek

Diyelim ki, bir özellik dalında yaptığınız bir düzeltmeyi, tüm özellik dalını birleştirmeden ana dala uygulamak istiyorsunuz.

  • Önce, aşağıdaki komutu çalıştırarak cherry-pick etmek istediğiniz commit’in hash’ini bulun:
git log
  • Commit’in hash’ini bulun. 
  • Ana dala geçin:
git checkout main
  • Cherry-pick komutunu çalıştırın (hash’in abc1234 olduğunu varsayalım):
git cherry-pick abc1234

Bu komutu çalıştırdığınızda Git, abc1234 ile tanımlanan commit’ten gelen değişiklikleri geçerli dalınıza (bu durumda main) uygular. Git, orijinal commit ile aynı değişiklikleri içeren ancak yeni bir commit hash’ine sahip, ana dal üzerinde yeni bir commit oluşturur.

Örnek 2: Birden çok commit’i cherry-pick etmek

Bazı durumlarda, bir daldan başka bir dala birden fazla ayrı commit uygulamanız gerekebilir. Diyelim ki özellik dalınızda ana dala taşınması gereken üç ayrı commit var.

  • git log kullanarak cherry-pick etmek istediğiniz her commit’in hash’ini bulun:
git log
  • Ana dala geçin:
git checkout main
  • Cherry-pick komutunu commit’leri listeleyerek çalıştırın:
git cherry-pick abc1234 def5678 ghi7890

Örnek 3: Bir commit aralığını cherry-pick etmek

Diyelim ki özellik dalında bir dizi commit yaptınız ve her birini tek tek belirtmeden bunları tek seferde ana dala uygulamak istiyorsunuz. Bunu nasıl yaparsınız?

  • Cherry-pick etmek istediğiniz başlangıç ve bitiş commit’lerini belirlemek için git log kullanın (ör. abc1234’ten ghi7890’a).
  • Ana dala geçin:
git checkout main
  • Commit aralığıyla cherry-pick komutunu çalıştırın:
git cherry-pick abc1234...ghi7890

Örnek 4: Uzak bir daldan commit cherry-pick etmek

Bazen, kritik bir düzeltme uzak bir dalda bulunur ve tüm dalı birleştirmeden onu yerel dalınıza uygulamak istersiniz. Bunu nasıl yapacağınız burada:

  • Uzak depodan en son değişiklikleri alın
git fetch origin
  • İhtiyacınız olan hash’i bulmak için uzak daldaki commit’leri listeleyin:
git log origin/feature_branch --oneline
  • Gerekli commit hash’inin abc1234 olduğunu varsayalım.
  • Yerel ana dalınıza geçin:
git checkout main
  • Uzak daldaki commit’i cherry-pick edin:
git cherry-pick abc1234

Bu, tüm dalı birleştirmeden uzak bir daldan bir commit uygulamanıza olanak tanır.

Uzak bir dalı checkout etmek mi gerekiyor? Adım adım uzak dallar için Git checkout rehberini izleyin.

Örnek 5: Bir commit’i cherry-pick etmek ve değiştirmek

Bir commit’i cherry-pick ettiğiniz halde, commit etmeden önce küçük değişiklikler yapmanız gerekiyorsa, Git’in etkileşimli modunu kullanabilirsiniz. Şöyle yapın:

  • Hedef dala geçin:
git checkout main
  • Commit etmeden önce duracak şekilde cherry-pick yapın:
git cherry-pick -n abc1234

-n (veya --no-commit) bayrağı değişiklikleri uygular ama commit oluşturmaz.

  • Gerektiği gibi dosyaları değiştirin.
  • Değişiklikleri aşamaya alın ve elle commit edin:
git add .
git commit -m "Modified cherry-picked commit from feature_branch"

Bu, bir cherry-pick edilmiş commit’i son haline getirmeden önce üzerinde ince ayar yapmanız gerektiğinde kullanışlıdır.

Git Cherry-Pick Sırasında Çakışmaların Yönetimi

Dallar arasında commit’leri cherry-pick ederken, özellikle kod tabanı önemli ölçüde ayrıştıysa çakışmalar kaçınılmazdır. 

cherry-pick değişiklikleri temiz bir şekilde uygulamak için tasarlanmış olsa da, farklılıkları her zaman otomatik olarak uzlaştıramaz. Bu durumlarda çakışmaların elle çözülmesi gerekir. Çakışmaların nasıl ortaya çıktığını ve nasıl ele alınacağını anlamak, bir cherry-pick işlemini tamamlamak için kritik önemdedir.

Çakışmalar nasıl oluşur

Çakışmalar genellikle, cherry-pick edilen commit’ten gelen değişiklikler ile hedef dalda hâlihazırda bulunan değişiklikler çakıştığında veya çeliştiğinde oluşur. Örneğin:

  • Aynı satırın her iki dalda da değiştirilmesi: Kodun aynı satırı hem kaynak hem hedef dalda değiştirildiyse Git hangi sürümü uygulayacağını bilemez.
  • Bir dalda silinen, diğerinde değiştirilen dosya: Bir dosya bir dalda silinip cherry-pick edilen commit’te değiştirildiyse, Git dosyanın korunup korunmayacağına veya değişikliklerin uygulanıp uygulanmayacağına karar veremez.
  • İlgisiz değişiklikler ancak aynı dosya: Değişiklikler ilgisiz görünse bile, aynı dosyada gerçekleşiyorsa Git bunu potansiyel bir çakışma olarak işaretleyebilir.

Bir çakışma oluştuğunda, Git cherry-pick işlemini durdurur ve devam etmeden önce çözülmesi gereken bir çakışma durumunda çalışma dizininizi bırakır.

Çakışmaların çözülmesi

Bir kez çakışma oluştuğunda, Git çakışan dosyaları gösterecek ve tutarsızlıkları elle çözmeniz gerekecektir. Çakışmaları şu şekilde çözebilirsiniz:

1. Çakışan dosyaları kontrol edin: Hangi dosyaların çakıştığını görmek için şu komutu çalıştırın:

git status

Komut, çakışma içeren dosyaların listesini gösterecektir. 

2. Çakışmaları çözün: Sorunları çözmek için çakışan dosyaları elle düzenleyebilirsiniz. Çakışma işaretleyicilerini (<<<<<<<, =======, >>>>>>>) kaldırın ve hangi değişikliklerin korunacağına veya nasıl birleştirileceğine karar verin.

3. Git Mergetool kullanın (isteğe bağlı): Çakışmaları elle çözmek zahmetliyse, çakışmaları görselleştirmeye ve çözmeye yardımcı bir birleştirme aracı kullanabilirsiniz:

git mergetool

Yapılandırmanıza bağlı olarak, yukarıdaki komut görsel bir birleştirme aracını açar; bu da çakışmaları gözden geçirmeyi ve çözmeyi kolaylaştırır.

4. Çakışmaları çözüldü olarak işaretleyin: Çakışmaları çözdükten sonra, dosyaları şu komutla çözüldü olarak işaretleyin:

git add <conflicted-file>

5. Cherry-pick’i tamamlayın: Tüm çakışmalar çözüldüğünde ve dosyalar aşamaya alındığında, cherry-pick’i şu komutla tamamlayın:

git cherry-pick --continue

Visual Studio Code ve GitHub gibi birçok modern IDE ve araç, yerleşik birleştirme çakışması çözüm özellikleri sunar. GitHub’ın web arayüzü, paylaşılan depolarda yerel ortama geçmeden doğrudan çekme isteklerinde çakışmaları çözmenize olanak tanır.

Çakışmadan sonra bir commit’i atlamak

Bazen, bir çakışmayı çözmek fazla karmaşık olabilir ya da commit’in aslında gerekli olmadığını fark edebilirsiniz. Bu gibi durumlarda, commit’i tamamen atlayabilirsiniz.

1. Geçerli cherry-pick sürecini atlayın: Çakışma çok karmaşıksa ve commit’i uygulamak istemiyorsanız, şu komutla atlayabilirsiniz:

git cherry-pick --skip

Bu komut, çakışan commit’i bırakır ve (birden çok commit’i cherry-pick ediyorsanız) sıradakine geçer.

2. Cherry-pick’in tamamını iptal edin: cherry-pick işlemini tamamen iptal etmek istiyorsanız, şunu çalıştırın:

git cherry-pick --abort

Bu komut, cherry-pick’e başlamadan önce çalışma dizininizin bulunduğu duruma geri döndürür. 

Commit geçmişinizi temizlemek mi istiyorsunuz? Birden fazla commit’i tek bir commit’te nasıl birleştireceğinizi Git squash eğitimi ile öğrenin.

Git Cherry-Pick Kullanımı için En İyi Uygulamalar

cherry-pick’in yanlış kullanımı, projenizin sürüm kontrolünde karmaşık geçmişlere ve kafa karışıklığına yol açabilir. Bu tuzaklardan kaçınmak için, en iyi uygulamalara uymak cherry-pick’i gereksiz karmaşıklık katmadan etkili şekilde kullanmanızı sağlar.

Küçük ve belirgin tutun

Cherry-pick, hata düzeltmeleri veya küçük özellik iyileştirmeleri gibi iyi tanımlanmış görevleri ele alan küçük, belirli commit’lerde en etkilidir. 

Birden çok değişikliği bir arada barındıran büyük, karmaşık commit’leri cherry-pick etmekten kaçının; çünkü bunlar çakışmalara yol açabilir ve kod tabanını yönetmeyi zorlaştırabilir. Commit ne kadar hedefe yönelikse, istenmeyen yan etkiler olmadan uygulaması o kadar kolaydır.

Cherry-pick’lerinizi belgelendirin

Açık bir geçmişi korumak için, cherry-pick yaparken her zaman uygun bağlam sağlayın. Bu, ayrıntılı commit mesajları veya dokümantasyondaki notlar aracılığıyla yapılabilir. 

Özetle, bir cherry-pick’in neden gerekli olduğunu açıklamalısınız. Bu, özellikle uzun ömürlü dallar veya işbirlikçi ortamlar arasında cherry-pick yaparken önemlidir; çünkü gelecekteki katkıda bulunanların, değişikliklerin neden seçici olarak uygulandığını anlamalarına yardımcı olur.

Commit geçmişini gözden geçirin

Cherry-pick yapmadan önce, hem kaynak hem hedef dalın commit geçmişini gözden geçirin. Bu adım, cherry-pick etmeyi düşündüğünüz commit’in başka değişikliklere bağımlı olup olmadığını belirlemeye yardımcı olur. Eksik bağımlılıklar, eksik işlevselliğe veya hatalara neden olabilir; bu nedenle cherry-pick’in yarım kalmış özellikler veya güncellemeler getirmediğinden emin olun.

Cherry-pick’i aşırı kullanmaktan kaçının

Cherry-pick, belirli değişiklikleri uygulamak için kullanışlı olsa da, aşırı kullanımı dallar arasında yinelenen commit’lerle parçalı bir geçmişe yol açabilir. Bu da belirli değişikliklerin kaynağını izlemeyi veya daha geniş geliştirme bağlamını anlamayı zorlaştırabilir. 

Cherry-pick yapmadan önce birleştirme (merge) veya yeniden taban oluşturmanın (rebase) daha uygun bir strateji olup olmadığını her zaman değerlendirin. Commit geçmişini kalabalıklaştırmamak için cherry-pick’i ölçülü ve amacına uygun kullanın.

Git’te gereksiz dosyalarla uğraşıyor musunuz? .gitignore’u etkili kullanmayı şu Git ignore eğitimi ile öğrenin.

Git Cherry-Pick ile Yaygın Sorunların Giderilmesi

cherry-pick kullanırken ortaya çıkan sorunları gidermek, Git’in temel mekanizmalarını net bir şekilde anlamayı gerektirir. Bu bölümde, cherry-pick sırasında karşılaşabileceğiniz bazı yaygın sorunları ve bunları nasıl çözeceğinizi ele alacağım.

Var olmayan bir commit’i cherry-pick etmek

Bazen, geçerli daldan erişilemeyen veya zaten birleştirilmiş bir commit’i cherry-pick etmeye çalışabilirsiniz. Bu genellikle commit’in bulunamadığını veya uygulanamadığını belirten bir hata mesajıyla sonuçlanır.

1. Commit bulunamadı: Cherry-pick etmeye çalıştığınız commit hash’i, geçerli deponuzda veya dal bağlamında bulunmadığında olur. Commit’in bulunduğu dalda git log ile commit geçmişini kontrol ederek doğru commit’e referans verdiğinizden emin olun. Çözüm:

  • Commit hash’ini doğru olduğundan emin olmak için iki kez kontrol edin.
  • Commit’in erişiminiz olan bir dalda bulunduğunu doğrulayın.
  • Commit uzak bir daldaysa, git fetch ile dalın getirildiğinden emin olun.

2. Commit zaten uygulanmış: Commit hedef dala zaten birleştirilmiş veya cherry-pick edilmişse, Git bunu yinelenmesini engeller. Bu koruma, geçmişi temiz tutar ve gereksiz değişikliklerden kaçınır. Çözüm:

  • Commit’in hedef dalda zaten olup olmadığını kontrol etmek için git log kullanın.
  • Gerekirse, değişiklikler zaten uygulandığından cherry-pick işleminden vazgeçin.

Rebase veya merge sonrasında cherry-pick yapmak

Rebase veya merge sonrasında cherry-pick yapmak, dallarınızın geçmişinin değişmiş olması nedeniyle karmaşıklıklar getirebilir. Rebase commit geçmişini yeniden yazar; merge ise dalları birleştirir. Her ikisi de cherry-pick’in uygulanabilirliğini etkileyebilir.

1. Rebase edilmiş commit’lerden kaynaklı çakışmalar: Rebase sonrasında commit geçmişi yeniden yazılır; bu da rebase sürecinde değiştirilen commit’leri cherry-pick etmeye çalışırsanız sorunlara yol açabilir. cherry-pick yeniden yazılmış geçmişle uyuşmayan değişiklikleri uygulamaya çalıştığı için çakışmalarla karşılaşabilirsiniz. Çözüm:

  • Cherry-pick edeceğiniz commit’in zaten değiştirilmediğinden emin olmak için rebase sonrasında git log ile commit geçmişini dikkatlice inceleyin.
  • Çakışmaları, standart bir cherry-pick sürecinde olduğu gibi git status ve elle düzenleme ile çözün.

2. Merge sonrasında yinelenen commit’ler: Dalları birleştirmek, cherry-pick etmek istediğiniz bir commit’in zaten birleştirilmiş geçmişe dahil olmasıyla sonuçlanabilir. Bunu tekrar cherry-pick etmek, geçmişinizi kalabalıklaştıran yinelenen commit’lere yol açabilir ve değişiklikleri izlemeyi zorlaştırabilir. Çözüm:

  • Cherry-pick’ten önce, commit’in zaten birleştirilmiş olup olmadığını doğrulamak için her iki daldaki commit geçmişini inceleyin.
  • Commit hedef dalda zaten varsa, aynı commit’i cherry-pick etmekten kaçının.

Git’te değişiklikleri geri almak mı istiyorsunuz? Git reset ve revert eğitimi ile git reset ve git revert’i ne zaman kullanacağınızı öğrenin.

Sonuç

git cherry-pick, bir dalın tamamını birleştirmeden belirli commit’leri bir daldan diğerine uygulamanın güçlü bir yoludur. İster bir hata düzeltmesini, ister bir özellik güncellemesini taşıyın, ister yalnızca seçici değişiklikler uygulayın; Git geçmişinizi temiz ve odaklı tutmaya yardımcı olur.

Bu rehberde, tekli ve çoklu commit’lerin nasıl cherry-pick edileceğini, çakışmaların nasıl çözüleceğini ve yaygın tuzaklardan kaçınmak için en iyi uygulamaların nasıl takip edileceğini ele aldım. cherry-pick’i akıllıca kullanarak, deponuzu düzenli tutarken iş akışınızı iyileştirebilirsiniz.

Git becerilerinizi derinleştirmek istiyorsanız, sağlam bir başlangıç için Foundations of Git kursuna göz atın. Ayrıca Introduction to GitHub Concepts’ı keşfedebilir veya GitHub Foundations beceri yolu ile yapılandırılmış bir yaklaşım benimseyebilirsiniz.

Artık cherry-pick’i profesyonel gibi nasıl kullanacağınızı bildiğinize göre, bir sonraki projenizde denemeye başlayın!

FAQs

Aynı commit’i iki kez cherry-pick edersem ne olur?

Zaten hedef dala uygulanmış bir commit’i cherry-pick etmeye çalışırsanız, Git yeni bir hash ile yinelenen bir commit oluşturabilir. Bir commit’in zaten uygulanıp uygulanmadığını kontrol etmek için şunu kullanın:

git log --oneline

Alternatif olarak emin değilseniz şunu kullanın:

git cherry-pick -n <commit-hash>

Bu, değişiklikleri commit etmeden uygular ve sonlandırmadan önce gözden geçirmenize olanak tanır.

Silinmiş bir daldan commit’leri cherry-pick edebilir miyim?

Evet! Dal silinmiş olsa bile commit’ler Git’in geçmişinde hâlâ bulunabilir.

Commit hash’ini bulmak için git reflog kullanın, ardından her zamanki gibi cherry-pick yapın.

Ancak Git, dalı zaten çöp toplamadan (garbage collect) geçmişse commit’ler kaybolmuş olabilir.

Farklı bir depodan bir commit’i nasıl cherry-pick ederim?

Başka bir depodan cherry-pick yapmak için önce onu uzak olarak ekleyin:

git remote add other-repo <repository-url>
git fetch other-repo

Ardından, commit’i belirleyip cherry-pick edin:

git cherry-pick <commit-hash>
Dosya silmeler içeren bir commit’i cherry-pick edebilir miyim?

Evet, cherry-pick bir commit’teki tüm değişiklikleri, dosya silmeler dahil, korur. Bir commit bir dosyayı siliyorsa, onu cherry-pick etmek hedef dalda dosyayı kaldırır.

Bir cherry-pick’i nasıl geri alırım?

Yanlışlıkla bir commit’i cherry-pick ettiyseniz ve henüz push etmediyseniz, şunu kullanarak geri alabilirsiniz:

git reset --hard HEAD~1

Cherry-pick’i zaten push ettiyseniz, şunu kullanın:

git revert <commit-hash>

Bu, cherry-pick edilmiş değişiklikleri geri alan yeni bir commit oluşturur.

git cherry-pick ile git apply arasındaki fark nedir?
  • git cherry-pick, belirli bir commit’i kopyalar ve commit meta verilerini koruyarak hedef dala uygular.
  • git apply, yama dosyalarını (git diff ile oluşturulan) uygulamak için kullanılır; ancak yeni bir commit oluşturmaz veya commit geçmişini korumaz.
Orijinal yazarı koruyarak bir commit’i nasıl cherry-pick edebilirim?

Varsayılan olarak, git cherry-pick sizi yazar olarak ayarlar. Orijinal commit yazarını korumak için şunu kullanın:

git cherry-pick -x <commit-hash>

Bu, yeni commit mesajına orijinal commit’e bir referans ekler.

Sıralı olmayan birden çok commit’i cherry-pick edebilir miyim?

Evet! Bir aralık belirtmek yerine, tek tek commit hash’lerini listeleyin:

git cherry-pick <commit1> <commit2> <commit3>

Bu, bir daldan yalnızca seçili commit’lere ihtiyaç duyduğunuzda kullanışlıdır.

Dallar arasında cherry-pick yaparken çakışmaları nasıl önlerim?

Cherry-pick yapmadan önce dalınızın güncel olduğundan emin olun:

git pull origin main

Ayrıca, değişikliklerin başka eksik commit’lere bağımlı olmadığını doğrulamak için commit geçmişini gözden geçirin. Çakışmalar oluşursa, bunları elle çözün ve şu komutla devam edin:

git cherry-pick --continue
git cherry-pick’i ne zaman kullanmaktan kaçınmalıyım?

git cherry-pick’in aşırı kullanımı, dallar arasında yinelenen commit’lerle düzensiz bir commit geçmişine yol açabilir. Şu durumlarda kaçınmak en iyisidir:

  • Değişiklikler birden fazla bağımlı commit içeriyorsa — merge veya rebase daha iyi bir seçim olabilir.
  • Dalları düzenli olarak senkronize etmeniz gerekiyorsa — rebase veya merge geçmişi daha temiz tutar.
  • Commit büyük kapsamlı yeniden yapılandırmalar (refactor) içeriyorsa; çünkü cherry-pick yalnızca belirli değişiklikleri taşır, daha geniş dal bağlamını taşımaz.
Kurtis Pykes

Yazar

Kurtis Pykes

Konular

İlgili