Ana içeriğe atla

Git Branch Değiştirme: Uygulamalı Örneklerle Rehber

git switch kullanarak Git’te bir dalı nasıl değiştireceğinizi öğrenin ve git switch ile git checkout arasındaki farkları anlayın.
Güncel 3 Eki 2026  · 8 dk. oku

Yapay Zeka ile Keşfedin

ChatGPTClaudePerplexity

Git’teki dallar bağımsız geliştirme çizgilerini temsil eder ve geliştiricilerin bir projenin birden fazla özelliği veya sürümü üzerinde eşzamanlı çalışmasına olanak tanır.

Git dalları, kod değişikliklerini yönetmek için yapılandırılmış bir yol sunar; böylece yeni özelliklerin, hata düzeltmelerinin ve deneyselliklerin ana kod tabanını bozmadan sorunsuz biçimde entegre edilmesini sağlar. 

Üç dala sahip bir projeyi gösteren diyagram

Geleneksel olarak dallar arasında geçiş yapmak için git checkout komutunu kullanıyorduk. Ancak checkout komutu yalnızca dal değiştirmekten çok daha fazlasını yapabildiği için bazı karışıklıklara ve hatalara yol açabiliyordu.

Ağustos 2019’da Git 2.23 ile tanıtılan git switch komutu, dallar arasında geçiş yapmak ve yeni dallar oluşturmak için daha sezgisel bir yol sağlar.

Git Switch ile Dallarda Geçiş ve Dal Oluşturma

Karmaşık projelerde öncelikler sürekli değişir ve iş akışı çoğu zaman doğrusal değildir. Genellikle her dal belirli değişikliklere odaklanır; böylece her biri kendi dalında olmak üzere birden fazla yeni özellik veya hata düzeltmesi üzerinde eşzamanlı çalışabiliriz.

Bir özelliği askıya alıp başka bir dala geçmemizi gerektirebilecek birkaç neden vardır. Örneğin:

  • Kod incelemesini beklemek.
  • Bir engelle karşılaşıp bir çalışma arkadaşından yardım alma ihtiyacı.
  • Acil müdahale gerektiren bir hotfix’i ele alma.

Dallar arasında verimli geçiş yapmak, geliştirmeyi sorunsuz sürdürmenin ve değişikliklerin olması gereken yere ulaşmasını sağlamanın anahtarıdır. Birden fazla görev ve ekip çalışması söz konusu olduğunda dallar arasında basit ve güvenilir bir şekilde geçiş yapabilmek önemlidir.

Var olan bir dala switch komutuyla geçmek için şunu yaparız:

git switch <branch-name>

Yukarıdaki komutta <branch_name>, geçmek istediğimiz dalın adıyla değiştirilmelidir. Diyelim ki mevcut bir dal olan feature-x’te yer alan yeni bir özellik üzerinde çalışmak istiyoruz; o zaman şu komutu kullanırız:

git switch feature-x

Mevcut Dalların İsimlerini Bulma

Kullanılabilir dalları listelemek istersek git branch komutunu kullanırız. Mevcut dalın yanında bir yıldız işareti görünür. Örneğin yerelde main, feature-x ve bug-z adlı üç dalımız varsa ve şu anda main dalındaysak, çıktı şöyle olur:

* main
feature-x
bug-z

Uzak Bir Dala Geçiş

Önceki komut, yerel makinemizde halihazırda bulunan bir dala geçmemizi sağlar. Uzak depodaki bir dala geçmek için önce aşağıdaki komutla onun yerel bir kopyasını oluşturmamız gerekir:

git switch -c <local-branch-name> origin/<remote-branch-name>

Burada <local-branch-name>, dalın yerelde sahip olmasını istediğimiz ad; <remote-branch-name> ise uzak dalın adıdır. Genellikle karışıklığı önlemek için aynı adı kullanmak isteriz. Diyelim ki feature-x dalı yerelde yok. O hâlde yerel bir sürüm oluşturup ona şöyle geçebiliriz:

git switch -c feature-x origin/feature-x

Aynı adı kullanırken Git, --track seçeneğiyle bir kısayol sunar. Dolayısıyla yukarıdaki komut şuna eşdeğerdir:

git switch --track origin/feature-x

Uzak dalları listelemek için git branch -r komutunu kullanabiliriz.

Yerel depo, uzak dalları otomatik olarak takip etmez. Bu nedenle uzak bir dalı listelemeden veya ona geçmeden önce git fetch ile yerel depoyu güncellemek önemlidir.

Yeni Bir Dal Oluşturup Ona Geçmek

Yeni bir özellikle çalışmaya başlamak için tamamen yeni bir dal oluşturmak istiyoruz. Bu durumda -c bayrağını kullanabiliriz:

git switch -c <new-branch-name>

Burada <new-branch-name dalın adıyla değiştirilir. Örneğin feature-y adlı bir dal oluşturmak için şunu yaparız:

git switch -c feature-y

Önceki Dala Geri Dönmek

Çoğu zaman, bir miktar iş yapmak için dala geçiş yaptıktan sonra, önce üzerinde çalıştığımız dala geri dönmek isteriz. Git bunun için şu komutla bir kısayol sağlar:

git switch -

Git Switch ve Git Checkout

git checkout komutu Git’in en başından beri mevcuttur. 2019’da git switch tanıtılmadan önce, dallar arasında geçiş yapmak için kullanılan komut git checkout idi. Ancak git checkout komutunun kapsamı, yalnızca dallar arasında gezinmenin ötesine geçer. İşte farkların dökümü:

  • git switch: Dallar arasında geçiş yapmak ve yeni dallar oluşturmak için daha sezgisel bir yol sunmayı amaçlar. Komut setini basitleştirir ve kafa karışıklığını azaltır.
  • git checkout: Dallar arasında geçiş için kullanılabileceği gibi dosyaları checkout etmek ve farklı commit’lerden veya dallardan içerik geri yüklemek için de kullanılabilen daha çok yönlü bir komuttur.

git switch’in tasarımı, yanlışlıkla değişikliklerin üzerine yazmayı zorlaştırır. Dallar arasında geçiş ve yeni dal oluşturma için daha açık bir sözdizimine sahiptir.

git checkout birden çok iş yaptığından (dal değiştirme, dosya geri yükleme vb.) kullanırken hata yapma olasılığı daha yüksektir.

Git Switch: Yaygın Hatalar

Dalları yönetirken birkaç yaygın sorunla karşılaşabilirsiniz. Bunlardan biri, yerelde zaten var olan bir dala yeniden oluşturma girişimidir. Bir diğer yaygın sorun, commit edilmemiş değişikliklerle dal değiştirmeye çalışırken ortaya çıkar. Önce ilkini açıklayarak başlayalım.

Dal zaten yerelde mevcut

Her yerel dalın benzersiz bir ada sahip olması gerekir. Yerel dalları git switch ile iki şekilde oluşturabilirsiniz:

1. Uzak bir dalı izlemek için:

git switch --track origin/<branch-name>

2. Yeni bir yerel dal oluşturmak için:

git switch -c <branch-name>

Her iki durumda da, yerelde <branch-name> adında bir dal zaten varsa Git şu hatayı verir:

fatal: a branch named '<branch-name>' already exists

Yereldeki başka bir dal ile aynı ada sahip bir dal oluşturamayız

Bu durumda git switch <branch-name> kullanarak dalı oluşturmadan ona geçebiliriz.

Geçerli dalda commit edilmemiş değişiklikler var

Geçerli dalda, geçişle üzerine yazılacak commit edilmemiş değişiklikler varsa Git dal değiştirmemize izin vermez. Bu durumda Git şu hatayı verir:

Please commit your changes or stash them before you switch branches.

<code data-mce-selected=

Mesajın belirttiği gibi, bu durumu aşmak için değişikliklerimizi ya önce commit etmemiz ya da stash’e almamız gerekir. Değişiklikler depoya commit edilmeye hazırsa şu komutla commit etmeliyiz:

git commit -m "Commit message"

Değişiklikleri saklamak istiyor ancak henüz commit etmeye hazır değilsek, onları geçici olarak git stash komutuyla kaydedebiliriz:

git stash

Dalları değiştirmeden önce değişiklikleri stash’e alırsak ve orijinal dala döndüğümüzde bunları yeniden uygulamak istersek git stash pop komutunu kullanabiliriz.

Alternatif olarak, --discard-changes bayrağını kullanarak değişiklikleri gözden çıkarmaya da karar verebiliriz:

git switch --discard-changes <branch-name>

Bu son seçeneği kullanmadan önce dikkatli olun; çünkü değişiklikler kalıcı olarak silinir.

Git Switch Gelişmiş Kullanım

Projenizin geçmişindeki belirli noktalardan dal oluşturmanız veya özel senaryoları yönetmeniz gerektiğinde, git switch bu ihtiyaçlara yanıt veren gelişmiş işlevler sunar.

Belirli bir noktadan dal oluşturma

Varsayılan olarak, git switch ile bir dal oluştururken yeni dalın başlangıç durumu, bulunduğumuz dalın HEAD’idir.

Varsayılan olarak dal oluşturma mevcut HEAD’den başlar

Diyelim ki yeni bir dalı geçmişteki belirli bir commit’ten başlatmak istiyoruz. Her commit benzersiz bir <hash> ile tanımlanır; bu git switch komutuyla o commit’ten yeni bir dal oluşturmak için kullanılabilir. Şöyle yapılır:

switch -c feature-y <hash>

<hash>’i gerçek commit hash’iyle değiştirin.

Commit hash’ini sağlayarak belirli bir commit’ten dallanabiliriz

Detached HEAD’e geçiş

Mevcut dalı etkilemeden veya yeni bir dal oluşturmadan belirli bir commit’i keşfetmek ya da denemeler yapmak istersek, şu komutla detached head kullanabiliriz:

git switch --detach <hash>

Detached head’e geçiş

HEAD’i ayırarak, depoyu belirli bir commit’teki durumuyla güvenle inceleyebilir, testler çalıştırabilir veya mevcut çalışma dalına yanlışlıkla commit edilme riski olmadan geçici değişiklikler yapabilirsiniz. En yaygın kullanım durumları şunlardır:

  • Eski bir durumu görüntüleme: Mevcut dalda değişiklik yapmadan daha eski bir commit’i incelemek veya test etmek istiyorsak, detached durumda o commit’e geçebiliriz.
  • Geçici değişiklikler: Herhangi bir dalı etkilemeden denemeler yapmak istersek, bu değişiklikleri detached head durumunda yapabiliriz. Bu durumda yapılan yeni commit’lerin herhangi bir dala ait olmayacağını ve bu commit’leri saklamak istiyorsak yeni bir dal oluşturmamız gerekebileceğini unutmayın.
  • Derleme/test amaçları: Bazen yazılımı belirli bir commit’te derlemek veya test etmek gerekir. O commit’te detached HEAD durumuna geçmek, deponun dal yapısını etkilemeden bunu yapmamıza olanak tanır.

Zorla geçiş

Öğrendiğimize göre, hedef dalla çakışabilecek commit edilmemiş değişiklikler varken Git dal değiştirmemize izin vermez. Bu değişiklikleri gözden çıkarmak ve geçişe devam etmek istediğimizden eminseK, -f seçeneğini kullanarak zorlayabiliriz. Şöyle:

git switch -f <branch-name>

Dikkate alınması gereken önemli çekinceler vardır. 

  • Herhangi bir uyarı olmaksızın tüm commit edilmemiş değişiklikler kaybolur; bu değişiklikler başka yerde kaydedilmediyse emek kaybına neden olabilir. 
  • -f seçeneğini ölçüsüz kullanmak, geliştiricileri WIP (devam eden çalışma) değişikliklerini stash’lemek veya commit etmek gibi doğru sürüm kontrolü uygulamalarını atlamaya teşvik ederek disiplin eksikliğine yol açabilir. Bu da dağınık bir depo geçmişine ve işbirliğinin zorlaşmasına neden olabilir. Bu nedenle, git switch -f hız ve kolaylık sunsa da, potansiyel sakıncaları azaltmak için dikkatli ve risklerin bilincinde olarak kullanılmalıdır.

Sonuç

git switch komutu, eski git checkout komutuna kıyasla dallar arasında geçiş yapmayı ve yeni dallar oluşturmayı kolaylaştırır.

Süreci basitleştirir ve hataları azaltmaya yardımcı olur; böylece geliştiricilerin kod tabanını yönetmesini kolaylaştırır.

Bu komut, değişikliklerin yanlışlıkla üzerine yazılması veya git checkout’un farklı işlevlerinin karıştırılması gibi yaygın sorunların önüne geçmeye yardımcı olur.

Bu komutu benimsemek, Git dallarında gezinmeyi daha sezgisel hâle getirebilir ve geliştirme ekipleri içinde işbirliğini güçlendirebilir.


François Aubry's photo
Author
François Aubry
LinkedIn
CheapGPT’te full-stack mühendisi ve kurucuyum. Öğretmek her zaman tutkum oldu. Öğrencilik yıllarımdan itibaren diğer öğrencilere ders verme ve yardımcı olma fırsatlarını hevesle aradım. Bu tutku beni doktora yapmaya yönlendirdi; bu süreçte akademik çalışmalarımı desteklemek için araştırma görevlisi olarak da görev aldım. O yıllarda, geleneksel sınıf ortamında bağlar kurmaktan ve öğrenmeyi kolaylaştırmaktan büyük bir tatmin duydum. Ancak çevrim içi öğrenme platformlarının ortaya çıkmasıyla birlikte dijital eğitimin dönüştürücü potansiyelini fark ettim. Nitekim üniversitemizde bu tür bir platformun geliştirilmesinde aktif rol aldım. Geleneksel öğretim ilkelerini yenilikçi dijital yöntemlerle bütünleştirmeye derinden bağlıyım. Tutkum, yalnızca ilgi çekici ve bilgilendirici olmakla kalmayan, aynı zamanda bu dijital çağdaki öğrenenler için erişilebilir kurslar tasarlamaktır.
Konular
Git

Sürüm kontrolünü bu kurslarla öğrenin!

Kurs

GitHub Kavramlarına Giriş

2 sa
53.7K
GitHub'ın çeşitli özelliklerini kullanmayı öğrenin, arayüzde gezinmeyi öğrenin ve günlük işbirliği görevlerini gerçekleştirin.
Ayrıntıları GörüntüleRight Arrow
Kursa Başla
Devamını GörRight Arrow
İlgili

blog

Hızlı Sevkiyat İçin Pratik Vibe Kodlama Teknoloji Yığını

Ön uç, arka uç, veritabanları, kimlik doğrulama, depolama, e-posta, test, dağıtım ve izleme için en iyi araçları keşfedin.
Abid Ali Awan's photo

Abid Ali Awan

14 dk.

blog

2026’da En Popüler 40 Yazılım Mühendisi Mülakat Sorusu

Algoritmalar, sistem tasarımı ve davranışsal senaryoları kapsayan bu temel sorularla teknik mülakat sürecine hakim olun. Uzman cevapları, kod örnekleri ve kanıtlanmış hazırlık stratejileri edinin.
Dario Radečić's photo

Dario Radečić

15 dk.

Eğitim

.gitignore Nasıl Kullanılır: Örneklerle Pratik Bir Giriş

Git deponuzu temiz tutmak için .gitignore’u nasıl kullanacağınızı öğrenin. Bu eğitim; temelleri, yaygın kullanım durumlarını ve başlamanıza yardımcı olacak pratik örnekleri kapsar!
Kurtis Pykes 's photo

Kurtis Pykes

8 dk.

Eğitim

Python'da Listeyi String'e Nasıl Dönüştürürsünüz

Bu hızlı eğitimde, Python'da bir listeyi string'e nasıl dönüştüreceğinizi öğrenin.
Adel Nehme's photo

Adel Nehme

Devamını GörDevamını Gör