Git Branching Nedir? Branch Mantığı ve Kullanım Senaryoları (2026)
Git, modern yazılım geliştirmede kullanılan en güçlü version kontrol sistemlerinden biridir. Git’i diğer VCS araçlarından ayıran en önemli özelliklerden biri ise hafif, hızlı ve esnek branch (dallanma) modelidir. Birçok VCS aracında branch oluşturmak maliyetliyken, Git’te bu işlem neredeyse anlıktır.
Bu rehberde: Git branching nedir, branch (dal) mantığı nasıl çalışır, HEAD nedir, branch oluşturma / geçiş yapma ve branch geçmişini görselleştirme adımlarını net örneklerle öğreneceksin.
İlgili İçerikler
İçindekiler
- Git Branching Nedir?
- Git Branch (Dal) Nasıl Çalışır?
- Git’te Yeni Branch Oluşturma
- Git HEAD Nedir?
- Git Checkout ile Branch Değiştirme
- Branch’ler Nasıl Ayrışır?
- Branch Yapısını Gösterme
- Git Branching Neden Bu Kadar Güçlü?
- Sık Sorulan Sorular (FAQ)
- Sonuç
1) Git Branching Nedir?
Git, veriyi “dosyalar değişti mi?” şeklinde değil; bir dizi snapshot (anlık görüntü) olarak saklar. Commit yaptığınızda Git:
- dosyaların anlık görüntüsünü oluşturur,
- bu görüntüyü bir commit nesnesinde saklar,
- commit’in bir önceki commit’e işaret eden pointer’ını ekler.
Bu yapı sayesinde Git branch’leri aslında yalnızca commit pointer’larından ibarettir ve çok hafiftir. Yani branch açmak, “yeni bir çalışma alanı” oluşturmanın en hızlı yoludur.
2) Git Branch (Dal) Nasıl Çalışır?
Git’te bir branch, yalnızca bir commit’e işaret eden basit bir pointer’dır. Varsayılan branch adı çoğu projede main (bazı projelerde master) olarak gelir.
Yeni commit yaptığınızda branch pointer’ı otomatik olarak ileri taşınır:
A → B → C (main)
Buradaki kritik fikir şudur: Branch, commit’leri “kopyalamaz”; sadece “en son commit neresi?” bilgisini taşır.
3) Git’te Yeni Branch Oluşturma
Yeni bir branch oluşturmak için şu komutu çalıştırın:
git branch testing
Bu komut yeni bir pointer oluşturur ancak aktif branch’i değiştirmez. Yani hâlâ main branch’indesiniz; sadece “testing” adlı yeni bir dal oluşturmuş oldunuz.
git checkout -b feature/login veya daha modern kullanım:
git switch -c feature/login
4) Git HEAD Nedir?
Git, hangi branch’in aktif olduğunu HEAD pointer’ı ile takip eder. HEAD, “şu an neredeyim?” sorusunun cevabıdır.
Örnek:
HEAD -> main
HEAD hangi branch’e bağlıysa, commit yaptığınızda ilerleyen pointer o branch olur.
5) Git Checkout ile Branch Değiştirme
Bir branch’e geçmek için şu komutu kullanabilirsiniz:
git checkout testing
Bu komut:
- HEAD pointer’ını testing branch’ine taşır,
- çalışma dizinini o branch’in snapshot’ına göre günceller.
Artık yapacağınız commit’ler testing üzerinde ilerlerken main branch sabit kalır. Bu da “ana hattı bozmadan” çalışma yapmanın temelidir.
6) Branch’ler Nasıl Ayrışır?
Farklı branch’lerde commit yaptıkça proje yapısı örneğin şöyle görünür:
main → C1
testing → C2
Her branch kendi gelişim hattını oluşturur. Git branching’in gerçek gücü de tam olarak buradan gelir: Aynı proje üzerinde paralel geliştirme yapılabilir.
7) Branch Yapısını Gösterme
Branch grafiklerini görmek için şu komutu çalıştırabilirsiniz:
git log --oneline --decorate --graph --all
Bu komut; branch’lerin, commit geçmişinin ve pointer’ların nasıl ilerlediğini görsel olarak gösterir. Özellikle merge sonrası “hangi commit nereden geldi?” sorusuna hızlı cevap verir.
8) Git Branching Neden Bu Kadar Güçlü?
- Branch oluşturma neredeyse anlıktır ve çok hızlıdır.
- Büyük projelerde bile hafiftir; performansı etkilemez.
- Paralel geliştirmeyi kolaylaştırır (özellik, bugfix, test).
- Sık branch açma ve merge etme pratik hale gelir.
- Modern ekip çalışma modelleri için idealdir (code review, PR/MR).
9) Sık Sorulan Sorular (FAQ)
Branch silersem commit’ler silinir mi?
Hayır. Branch silmek çoğu durumda sadece pointer’ı kaldırır. Commit’ler bir süre Git geçmişinde bulunur ve reflog üzerinden geri getirilebilir.
main branch’e direkt commit atmalı mıyım?
Takım projelerinde genellikle önerilmez. Feature branch açıp Merge Request / Pull Request ile ilerlemek daha güvenlidir.
Branch isimlendirme nasıl olmalı?
Anlamlı ve standardize isimler kullanın: feature/login, bugfix/null-pointer, hotfix/payment.
Bu, ekip içi anlaşılabilirliği artırır.
Branch stratejisi seçerken ayrıca şu yazı da faydalı olur: SVN ve Git Arasındaki Farklar
10) Sonuç
Git branching, yazılım geliştirme sürecinin en kritik parçalarından biridir. Hızlı, hafif ve esnek yapısı sayesinde birden fazla geliştiricinin paralel çalışmasına olanak tanır. Git’in gerçek gücü, branch yapısını doğru kullanmakla ortaya çıkar.