Git Merge Nedir? Branch (Dal) Birleştirme Nasıl Yapılır?
Git Merge Nedir? Branch (Dal) Birleştirme Nasıl Yapılır?
Git Merge, farklı bir branch (dal) üzerinde yapılmış ve commit edilmiş değişiklikleri, bulunduğunuz aktif hedef branch'e (genellikle main veya master) entegre etme (birleştirme) işlemidir. Bu işlem sayesinde paralel olarak geliştirilen farklı özellikler (feature) veya hata düzeltmeleri (bugfix), güvenli bir şekilde tek bir ana geliştirme hattında toplanır.
Modern yazılım geliştirme ve DevOps süreçlerinde kodların birbirine karışmasını engellemenin en iyi yolu Git kullanmaktır. Git’in en güçlü özelliklerinden biri de izole bir şekilde çalışmanızı sağlayan branch (dal) yapısıdır. Peki, kendi dalımızda yaptığımız geliştirmeleri ana projeye nasıl aktarırız? Bu yazıda Git merge nedir, branch birleştirme nasıl yapılır ve işlem sonrası git log ile geçmiş nasıl kontrol edilir adım adım inceleyeceğiz.
1. Git Merge (Birleştirme) Nedir?
Git merge, takım çalışmasının temel taşıdır. Bir geliştirici "A" özelliğini feature-a dalında, başka bir geliştirici "B" özelliğini feature-b dalında geliştirebilir. Geliştirmeler tamamlandığında, bu kodların ürünün canlıya çıkacak (production) haline yani main dalına eklenmesi gerekir. İşte bu iki farklı yolun tek bir yolda birleşmesi işlemine merge denir.
2. Merge İşlemine Başlamadan Önce (git branch)
Birleştirme işlemine başlamadan önce projedeki mevcut dalları görmek ve şu anda tam olarak hangi branch'te bulunduğumuzu tespit etmek hataları önler.
# Mevcut branch'leri listeler ve aktif olanı (*) ile gösterir
git branch
Bu komutu çalıştırdığınızda aktif branch yeşil renkle (veya yanında yıldız işaretiyle) gösterilir. Genellikle projenin ana geliştirme dalı main veya master olarak adlandırılır.
3. Git Checkout ile Hedef Branch’e Geçme
Git'te merge işlemi her zaman içeriye doğru yapılır. Yani değişiklikleri almak (kabul etmek) istediğiniz hedef branch'in içine girmelisiniz. Bunu git checkout veya yeni nesil git switch komutuyla yaparız.
# Değişikliklerin aktarılacağı ana (hedef) branch'e geçiş yapıyoruz
git checkout main
Genel kullanım sözdizimi şöyledir:
git checkout <hedef_branch_adi>
Bu komutu girdiğinizde Git, HEAD işaretçisini (pointer) seçtiğiniz branch'e kaydırır ve çalışma dizininizi (working directory) o branch'in son haline göre günceller.
4. Git Merge Komutu ile Branch Birleştirme
Şu anda hedef branch'te (Örn: main) olduğumuzdan eminiz. Şimdi dışarıdaki işi bitmiş branch'i (Örn: yeni-ozellik) mevcut branch'imize entegre edeceğiz:
# Belirtilen branch'teki kodları, şu an bulunduğumuz branch'e ekler
git merge yeni-ozellik
Eğer aynı dosyanın aynı satırlarında çelişen bir kod (Conflict) yoksa, Git bu iki dalı "Fast-forward" veya "Merge commit" yöntemiyle başarılı bir şekilde birleştirecektir.
5. Merge Sonrası Commit Geçmişini Kontrol Etme
Birleştirme işlemi bittikten sonra, diğer daldan gelen kodların ve yeni "Merge Commit" kaydının gerçekten ağaca eklenip eklenmediğini kontrol etmek en iyi pratiktir. Bunun için git log komutu kullanılır:
# İşlem geçmişini ve commitleri listeler
git log
# Çok daha sade ve tek satırlık grafiksel görünüm için:
git log --oneline --graph
6. Git Merge Neden Önemlidir?
- Paralel Geliştirme: Ekip üyelerinin birbirinin kodunu bozmadan aynı anda farklı özellikler üzerinde çalışmasını mümkün kılar.
- İzolasyon: Yeni özellik (Feature) veya hata çözüm (Bugfix) süreçlerini birbirinden tamamen ayırır.
- Kararlılık: Test edilmemiş hiçbir kod doğrudan ana sisteme gitmez. Ana branch (main/master) her zaman temiz ve stabil kalır.
- Sürdürülebilirlik: Sorun çıktığında
git logüzerinden değişikliklerin hangi branch'ten geldiği kolayca bulunabilir.
7. Sık Sorulan Sorular (SSS)
Git merge komutu tam olarak ne yapar?
Belirttiğiniz bir daldaki (branch) kayıtlı değişiklikleri alır ve şu an üzerinde aktif olarak bulunduğunuz dalın içine katarak iki yapıyı tek bir akışta birleştirir.
Merge conflict (Çakışma) nedir?
İki farklı branch'te, aynı dosyanın birebir aynı satırında farklı değişiklikler yapıldıysa, Git hangisini seçeceğine karar veremez ve "Conflict" fırlatır. Geliştiricinin bu dosyayı açıp, hangi kodun kalacağını manuel olarak seçmesi ve ardından tekrar commit atması gerekir.
git checkout yerine ne kullanabilirim?
Git'in yeni sürümlerinde (2.23 ve sonrası), git checkout komutunun karmaşıklığını gidermek için branch değiştirmek amacıyla sadece git switch branch_adi komutu kullanılabilmektedir.
Sonuç
Bu yazımızda, versiyon kontrol sistemlerinin belkemiği olan Git merge (birleştirme) işleminin ne olduğunu, git checkout ile branch geçişlerini ve git log ile süreç kontrolünü detaylıca ele aldık. Git’i etkili kullanmanın ilk kuralı, branch (dal) açma ve bunları güvenle merge etme mantığını oturtmaktır. Bu yapı doğru kullanıldığında, karmaşık yazılım projelerinde takım çalışmasını kusursuz bir hale getirir.