Ana içeriğe geç

Merge

Türkçe karşılığı
birleştirme
Okunuşu
mörc

Günlük kullanımda çoğunlukla İngilizcesi tercih edilir.

Güncellendi 2 dk okuma

Bu sayfayı paylaşın

Bağlantıyı gönderin, tanımı bağlantısıyla birlikte alıntılayın ya da kendi sitenizde bir kart olarak gösterin.

https://softwaredictionary.org/tr/terimler/merge

Kısaca

Git'te merge, bir branch'teki değişiklikleri başka bir branch'e katarak ayrı geliştirme hatlarını tek ve ortak bir geçmişte yeniden birleştirir.

Git'te merge nedir?

Merge, ayrı branch'lerde yapılan işlerin yeniden bir araya gelme yoludur. Bir feature branch'i main'e merge ettiğinizde Git, feature branch'indeki commit'lerin değişikliklerini entegre eder; böylece main artık yeni işi de içerir. Her iki branch'in geçmişi korunur.

Git iki ana yolla birleştirme yapar. Hedef branch, feature branch oluşturulduğundan beri değişmediyse Git, branch işaretçisini basitçe ileri taşıyan bir fast-forward merge yapar. İki branch'te de yeni commit'ler varsa Git üç yönlü (three-way) merge yapar: her branch'i ortak atalarıyla karşılaştırır ve birleşik sonucu, iki ebeveyni olan yeni bir merge commit'e kaydeder.

Merge çakışması (conflict), her iki branch de aynı dosyanın aynı satırlarını değiştirdiğinde ortaya çıkar; Git hangi sürümü tutacağına karar veremez. Git, çakışan bölümleri <<<<<<<, ======= ve >>>>>>> işaretleriyle belirtir; dosyayı düzenleyip doğru içeriği bırakmanız ve sonucu commit etmeniz gerekir. Bu, iki kişinin ortak bir belgede aynı cümleyi düzenlemesine benzer: nihai ifadeye birinin karar vermesi gerekir.

Merge sıklıkla rebase ile karşılaştırılır. İkisi de bir branch'teki değişiklikleri diğerine getirir; ancak merge geçmişi merge commit'ler dahil olduğu gibi korurken, rebase düz ve doğrusal bir geçmiş oluşturmak için commit'leri yeniden yazar. Başkalarının da kullandığı branch'ler için merge genellikle daha güvenli seçimdir.

Bir bakışta

Git'in iki birleştirme yolu: iki branch'te de yeni commit'ler varsa üç yönlü merge, biri main'deki C, diğeri feature'daki E olmak üzere iki ebeveyni olan M merge commit'ini oluşturur; main ilerlemediyse fast-forward merge yalnızca main işaretçisini E'ye taşır.Üç yönlü mergeikisi de ilerledi1. ebeveyn2. ebeveynABCMDEortak atamerge commitmainfeatureFast-forwardmain ilerlemediABDEmainileri taşınırmainfeature
İki branch de ilerlediyse Git onları iki ebeveynli yeni bir commit ile birleştirir. Main ilerlemediyse main'i yalnızca ileri taşır.

Önemli noktalar

  • Merge, bir branch'teki değişiklikleri başka bir branch'e entegre eder.
  • Fast-forward merge yalnızca işaretçiyi ilerletir; three-way merge ise bir merge commit oluşturur.
  • İki branch aynı satırları değiştirdiğinde çakışma oluşur ve elle çözülmesi gerekir.
  • Merge geçmişi korur, rebase ise geçmişi düz bir çizgiye yeniden yazar.

Örnek

Bir branch'i birleştirmek ve çakışmayı çözmekbash
# Switch to the branch you want to merge into
git switch main

# Bring in the changes from the feature branch
git merge feature/search-bar

# If there is a conflict: fix the marked files, then
git add src/search.ts
git commit            # completes the merge

# Or cancel the merge and go back to how things were
git merge --abort

Sık sorulan sorular

Merge çakışması nedir?

Merge çakışması, iki branch bir dosyanın aynı bölümünü farklı şekillerde değiştirdiğinde ve Git bunları otomatik olarak birleştiremediğinde ortaya çıkar. Dosyayı doğru nihai sürüme getirerek düzenler, git add ile stage eder ve commit ederek çözersiniz.

Merge ile rebase arasındaki fark nedir?

Merge, branch'leri birleştirir ve tüm geçmişlerini korur; gerektiğinde bir merge commit ekler. Rebase ise commit'lerinizi başka bir branch'in üzerine taşır ve bunları yeniden yazarak temiz, doğrusal bir geçmiş üretir.

Squash merge nedir?

Squash merge, bir branch'teki tüm commit'leri hedef branch üzerinde tek bir yeni commit'te birleştirir. Ana geçmişi derli toplu tutar; bunun bedeli, feature branch'indeki tek tek commit'lerin kaybolmasıdır.

Sık karşılaştırılanlar

İlgili sayfalar

Kaynaklar

Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin

Daha fazla

Ayarlar