Merge
- Türkçe karşılığı
- birleştirme
- Okunuşu
- mörc
Günlük kullanımda çoğunlukla İngilizcesi tercih edilir.
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
Ö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
# 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 --abortSı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
- GitSürüm Kontrolü, s. 10Git, dosyalardaki değişiklikleri zamanla izleyen ücretsiz, açık kaynaklı dağıtık sürüm kontrol sistemidir; iş birliğini ve hataları geri almayı kolaylaştırır.
- BranchSürüm Kontrolü, s. 2Git'te branch, bir özellik ya da düzeltme üzerinde, birleştirene kadar ana kodu etkilemeden çalışmanızı sağlayan bağımsız bir geliştirme hattıdır.
- RebaseSürüm Kontrolü, s. 33Git'te rebase, bir branch'in commit'lerini başka bir commit'in üzerine yeniden uygular; geçmişi yeniden yazıp merge commit'siz, temiz ve doğrusal kılar.
- Merge ConflictSürüm Kontrolü, s. 30Merge çakışması, iki branch bir dosyanın aynı satırlarını değiştirdiği için Git'in otomatik birleştiremediği, sonuca birinin karar vermesi gereken durumdur.
- CommitSürüm Kontrolü, s. 5Commit, Git'te projenin dosyalarının; benzersiz bir kimlik, yazar, zaman damgası ve değişikliği anlatan bir mesajla kaydedilmiş anlık görüntüsüdür.
- Pull RequestSürüm Kontrolü, s. 32Pull request, bir branch'teki değişiklikleri başka bir branch'e birleştirme önerisidir; kod birleşmeden önce ekibe inceleme, tartışma ve test alanı sunar.
- Fast-Forward MergeSürüm Kontrolü, s. 8Fast-forward merge, hedef branch'te diğer branch ayrıldığından beri yeni commit yoksa olur; Git merge commit'i oluşturmaz, işaretçiyi yalnızca ileri taşır.
Kaynaklar
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin