- Katılım
- 21 May 2023
- Mesajlar
- 711
- Tepki
- 17
- Puan
- 18
İki kişi aynı projede ayrı hatlarda çalıştıktan sonra işler bir noktada birleşmek zorunda. Bu birleşme elle dosya kopyalayarak değil, aracın kendi komutuyla yapılıyor ve arkasında belirli bir mantık var.
Bu yazı birleştirmenin ne yaptığını, hangi noktadan itibaren çalıştığını, sonuçta ortaya çıkan kaydın neyi taşıdığını ve çakışma çıktığında ne olduğunu Git'in resmî komut belgesine bakarak topluyor.
Birleştirme neyi alıyor?
Git'in birleştirme komutu belgesi işi tek cümlede tarif ediyor: adı verilen işlemelerdeki değişiklikleri geçerli dala dahil ediyor.
Cümlenin parantez içindeki kısmı belirleyici: bu değişiklikler, ilgili geçmişlerin geçerli daldan ayrıldığı andan itibaren olanlar. Yani araç, iki hattın ortak atasını buluyor ve yalnız ondan sonrasını hesaba katıyor.
- Ortak ata: İki hattın ayrıldığı nokta.
- Kapsam: Ayrılıştan bugüne yapılan değişiklikler.
- Sonuç: Geçerli dalda yeni bir kayıt.
Nerede kullanılıyor?
Belge iki kullanım anıyor. Komut, başka bir depodan gelen değişiklikleri dahil etmek için çekme işlemi tarafından kullanılıyor; ayrıca bir daldaki değişiklikleri diğerine katmak için elle de çalıştırılabiliyor.
Bu, günlük kullanımda tek komut gibi görünen işin altında iki adım olduğunu gösteriyor: önce uzaktan getirme, sonra birleştirme.
Sonuçta ne kaydediliyor?
Belgedeki örnek akış sonucu net anlatıyor: konu dalında ayrıldığı noktadan güncel işlemesine kadar yapılan değişiklikler ana dalın üzerine yeniden oynatılıyor ve sonuç yeni bir işlemede kaydediliyor.
Bu yeni kaydın içeriği de tanımlı: iki ana kaydın adlarıyla birlikte, kullanıcının değişiklikleri anlatan günlük mesajı saklanıyor. Yani birleştirme kaydı, iki hattın buluştuğu noktayı geçmişte görünür kılıyor.
Belge bir güvenlik ayrıntısı da veriyor: işlemden önce geçerli dalın ucu ayrı bir referansta saklanıyor. Yanlış giden bir birleştirmeden dönmek isteyenler için başlangıç noktası bu.
Püf nokta' Alıntı:Birleştirme kaydı iki ana kaydı birden gösterir; geçmiş bu yüzden düz bir çizgi olmaktan çıkar.
Örnek akış ne anlatıyor?
Belgedeki örnek, iki hattın ayrıldığı ve sonra buluştuğu bir geçmiş çiziyor. Ana hat kendi yolunda ilerlerken, konu hattı ayrıldığı noktadan itibaren kendi kayıtlarını biriktiriyor.
Birleştirme çalıştığında konu hattındaki kayıtlar ana hattın üstüne taşınıyor ve geçmişte iki hattın birleştiği yeni bir düğüm oluşuyor. Bu düğüm, kimin nereden geldiğini gösterdiği için sonradan yapılan incelemeleri kolaylaştırıyor.
Örnekteki en öğretici ayrıntı, işlemin ana hattaki mevcut kayıtları yeniden yazmaması. Ana hat olduğu gibi duruyor, üzerine bir katman ekleniyor.
Neden ortak ata aranıyor?
Değişiklikleri "ayrıldıkları andan itibaren" almak, gereksiz işi ortadan kaldırıyor. İki hattın ortak geçmişi zaten aynı olduğu için, o kısmı tekrar taşımak hem anlamsız hem de çakışma üretecek bir işlem olurdu.
Bu yaklaşım aynı zamanda birleştirmenin neden hızlı olduğunu açıklıyor: karşılaştırma bütün geçmişte değil, yalnız ayrılma noktasından sonrasında yapılıyor.
Uzun süre birleştirilmeden bekleyen dalların sorun çıkarmasının sebebi de burada: ayrılma noktası geride kaldıkça, taşınacak değişiklik kümesi ve dolayısıyla çakışma ihtimali büyüyor.
Çakışma çıkarsa
Belge durumu açıkça yazıyor: otomatik olarak çözülemeyen bir çakışma varsa birleştirme duruyor.
Bu, aracın kararı kullanıcıya bıraktığı an. İki hatta aynı yer farklı biçimde değiştiğinde hangi hâlin doğru olduğunu bilecek olan araç değil, değişikliği yapan kişi.
Durumu geri almak ya da kaydı düzeltmek gerektiğinde izlenecek yolları commit geri alma yazımızda ele almıştık.
Geri dönüş noktası neden önemli?
Belgenin işlem öncesi dalın ucunu ayrı bir referansta sakladığını söylemesi, günlük kullanımda çoğu zaman fark edilmiyor. Oysa hatalı bir birleştirmeden sonra "önceki hâl neredeydi" sorusunun cevabı orada duruyor.
Bu kayıt, birleştirmenin geri alınabilir bir işlem olmasını sağlıyor. Geçmiş silinmediği için, yanlış giden bir birleşme sonrası dal eski ucuna döndürülebiliyor.
Dalla ilişkisi
Birleştirme, dal kavramı olmadan anlamsız. Hangi hattın nereden ayrıldığını ve ucun nasıl ilerlediğini git komutları yazımızda toplamıştık.
Sürekli tümleştirme kuran ekiplerde birleştirme sonrası çalışan akışların eski dosyayla iş görmesi ayrı bir tuzak; bunu önbellek yazımızda göstermiştik.
Sık Sorulan Sorular
Merge ne demek?
Belirtilen işlemelerdeki değişiklikleri, geçmişlerin ayrıldığı andan itibaren geçerli dala dahil etmek.
Hangi değişiklikler alınıyor?
Yalnız iki hattın ayrıldığı noktadan sonrakiler; ortak geçmiş tekrar işlenmiyor.
Sonuçta ne oluşuyor?
İki ana kaydın adını ve kullanıcının günlük mesajını taşıyan yeni bir işleme.
Çekme ile ilişkisi ne?
Çekme, başka bir depodan gelen değişiklikleri dahil etmek için bu komutu kullanıyor.
Çakışmada ne oluyor?
Otomatik çözülemeyen bir çakışma varsa birleştirme duruyor ve karar kullanıcıya kalıyor.
Özetle
Birleştirme, iki hattın ayrıldığı noktadan sonraki değişiklikleri geçerli dala taşıyor ve sonucu iki ana kaydı gösteren yeni bir işlemede kaydediyor. İşlem öncesinde dalın ucu ayrı bir referansta saklanıyor, böylece geri dönüş noktası kalıyor. Otomatik çözülemeyen bir çakışma çıktığında araç duruyor; o noktadan sonrası insan kararı.
Ekibinizde birleştirme çakışmalarını kim çözüyor: değişikliği yapan mı, dalı birleştiren mi?
Güncelleme: 2 Eylül 2026. Git'in resmî git-merge komut belgesi kontrol edildi.
Dijital Dünyanıza Yön Veren Pusula