Branch'ler, aynı projedeki farklı çalışma kollarını birbirine engel olmadan paralel yürütmenizi sağlar. Bu makalede branch'in ne olduğunu ve neden kullanıldığını öğrenecek; branch oluşturmayı, aralarında geçiş yapmayı, değişiklikleri birleştirmeyi ve IDE araçlarıyla merge çatışmalarını sakince çözmeyi göreceksiniz. Claude Code'un repository'nizde ayrı bir branch üzerinde çalışırken ne yaptığını anlamak için gereken temel de bu.
Örnekler ve ekran görüntüleri JetBrains IDE'lerinden alınmıştır; eylemlerin adları ve konumları kullandığınız sürümde farklı olabilir. Alıştırmalar için ayrı bir eğitim repository'si kullanın. Gerçek bir iş projesinde ise o projenin branch, commit ve değişiklik gönderme kurallarına uyun.
Branch nedir, neden kullanılır
Branch, ayrı bir commit dizisine verilen addır. Branch oluşturmak proje klasörünü kopyalamaz ve commit edilmemiş dosyaları kaydetmez. Normal bir çalışma klasöründe başka bir branch'e geçtiğinizde Git dosyaları seçilen branch'e göre günceller; tamamlanmamış değişiklikler sizinle birlikte taşınabilir ya da geçişi engelleyebilir.
Ana branch main'den, ayrı bir geliştirme kolu için yeni bir branch açılır: feature/new-idea. İş tamamlandığında değişiklikler tekrar main branch'iyle birleştirilir.
Diyelim ki projenizde kapsamlı bir değişiklik yapmak ya da riskli bir deneme gerçekleştirmek istiyorsunuz. Git olmasaydı ne yapardınız? Büyük olasılıkla tüm projeyi yeni bir klasöre kopyalayıp orada çalışırdınız. Sonucu beğenseydiniz ana klasöre taşırdınız, beğenmeseydiniz kopyayı silip geçerdiniz.
Kopya benzetmesi farklı çalışma seçeneklerini anlamaya yardımcı olur, ama teknik olarak branch, bir commit'i gösteren işaretçidir. Bunu bir kitap üzerinden düşünelim:
- elinizde bitmiş bir el yazması vardır (bu, ana branch'iniz olan
main); - alternatif bir son yazmak istersiniz (örneğin
feature/new-ideabranch'ini oluşturursunuz); - ana metne dokunmadan yeni sonu yazarsınız (yeni branch'te çalışırsınız);
- yeni son daha iyi olursa eskisinin yerine koyarsınız (branch'leri
mergeile birleştirirsiniz); - eski ve artık gerekmeyen taslağı silebilirsiniz (branch'i silersiniz).
Önce Claude Code'dan branch'i ve mevcut değişiklikleri göstermesini isteyin. Ayrı bir branch, projenin kurallarına uygunsa oluşturulur. Kaydedilmiş commit'ler geri dönmek için bir nokta sağlar; branch adını silmek tek başına dosyalardaki değişiklikleri geri almaz ve önceki durumu geri getirmez.
Yeni branch oluşturma ve branch'te çalışma
Adım 1. Branch yönetimi menüsünü açın.
Ana araç çubuğunda, proje adının yanında geçerli branch'in adını gösteren bir widget bulunur (varsayılan olarak main). Widget'a tıklayıp + New Branch'i seçin.

Adım 2. Yeni branch'e ad verin.
Branch'e üzerinde çalıştığınız göreve göre ad vermek iyi bir alışkanlıktır. Örneğin feature/add-usage-examples.

Oluşturma sırasında Checkout branch seçeneği işaretliyse IDE yeni branch'e geçer. Dosyaları düzenlemeden önce adını widget'tan kontrol edin.
Adım 3. Değişiklikleri yapıp commit edin.
README.md dosyasına kullanım örnekleri içeren bir bölüm ekleyin. Değişiklikleri gözden geçirip alıştığınız şekilde commit edin: yeni branch'in geçmişinde kaydedilmiş bir anlık görüntü oluşur.

Claude Code commit oluşturmayı önerdiğinde yaptığı tam olarak budur: mevcut değişiklikleri daha sonra geri dönebileceğiniz bir nokta olarak kaydeder. Onaylamadan önce commit mesajını okuyun; nelerin değiştiğini anlatır ve kolayca düzenlenebilir.
Branch'ler arasında geçiş
Kullanım örneklerini içeren değişiklikleriniz artık feature/add-usage-examples branch'inde güvenle kaydedildi. Şimdi ana branch olan main'e dönüp orada neler olduğuna bakalım.
Adım 1. Sol üst köşedeki geçerli branch adını gösteren widget'a yeniden tıklayın.
Adım 2. Local veya Recent listesinden main branch'ini seçip açılan alt menüde Checkout'a tıklayın.

Adım 3. Sonucu kontrol edin.
Geçiş yaptıktan sonra README.md dosyasını açın. Kullanım örnekleri bölümünün bu dosyada olmadığını göreceksiniz; bölüm diğer branch'te kaldı. Böylece main branch'indeki kararlı sürüme dokunmadan yeni özellikler üzerinde çalışabilirsiniz.

Branch'leri birleştirme
merge, seçilen branch'in geçmişini geçerli branch ile birleştirir. main, branch oluşturulduktan sonra ilerlemediyse fast-forward mümkün olur: main yeni bir commit oluşturmadan C3'e ilerler. Geçmişler ayrıştıysa normal birleştirme iki ebeveynli bir commit oluşturur.
Gösterilen doğrusal durumda main, C3'e ilerleyebilir. feature/add-usage-examples branch'i de şimdilik C3'ü gösteriyor; birleştirme için branch adını silmeniz gerekmez.
feature/add-usage-examples branch'indeki işinizi tamamladınız ve bu değişiklikleri ana projeye eklemek istiyorsunuz.
Adım 1. Hedef branch'e geçin.
Değişiklikleri NEREYE eklemek istiyorsanız o branch'te olduğunuzdan emin olun. Bizim örneğimizde bu branch main.
Adım 2. Birleştirme işlemini yapın.
Branch yönetimi widget'ına yeniden tıklayın. Listeden değişiklikleri NEREDEN almak istiyorsanız o branch'i seçin (feature/add-usage-examples) ve alt menüden Merge 'feature/add-usage-examples' into 'main' seçeneğine tıklayın.

Adım 3. Sonucu kontrol edin.
Artık main branch'indeki README.md dosyasında yeni örnekler bölümünüz yer alıyor. Çalışmanızı projenin ana sürümüyle başarıyla birleştirdiniz.

Birleştirme çatışmaları
Çatışma, Git'in değişiklikleri otomatik olarak birleştiremediği anlamına gelir. Sık görülen bir durum, aynı satırların farklı biçimde düzenlenmesidir; bir branch'te dosyanın silinip diğerinde değiştirilmesi de çatışmaya yol açabilir. Çözümü, elde edilmesi gereken sonuca göre seçersiniz.
IDE'nizin (CLion veya IntelliJ IDEA) yerleşik araçlarının gücü asıl burada ortaya çıkar. Çatışmaları terminalde çözmek pek keyifli değil; yerleşik üç yönlü birleştirme aracı (3-way merge) ise süreci anlaşılır ve kolay hale getirir.
C1 ortak atasından sonra iki branch'e de yeni commit'ler eklendi. Geçmişin ayrışması tek başına çatışma olacağını göstermez; çatışma, Git değişiklikleri otomatik olarak birleştiremediğinde oluşur. Aşağıdaki alıştırmada aynı orijinal satırı iki farklı metinle değiştireceksiniz.
Bir çatışma oluşturalım:
mainbranch'inde olduğunuzdan emin olun ve Commit penceresinde commit edilmemiş değişiklik ya da yeni dosya bulunmadığını kontrol edin;feature/new-titleadında yeni bir branch oluşturun, ancak şimdilik bu branch'e geçmeyin. Checkout branch kutusunun işaretli olmadığını kontrol edin;mainbranch'indeykenREADME.mddosyasının ilk satırını "Harika Projem" olarak değiştirin vecommityapın;feature/new-titlebranch'ine geçin.README.mddosyasının ilk satırının eski haliyle kaldığını göreceksiniz; branch oluşturulduğundaki dosya durumu budur. Aynı satırı "Süper Projem" olarak değiştirin vecommityapın;mainbranch'ine dönün vefeature/new-titlebranch'ini merge edin.
Artık Git iki geçmişin de aynı yerde değiştiğini görecek. Çatışmayı çözmeniz için Merge Conflicts penceresini açacak.

Çatışma çözme aracını açmak için Merge düğmesine tıklayın. Burada şunları göreceksiniz:
- solda (Your changes) - geçerli branch'inizdeki dosya sürümü (değişiklikleri eklediğiniz yer,
main); - sağda (Changes from branch) - birleştirdiğiniz branch'teki dosya sürümü;
- ortada (Result) - elle oluşturmanız gereken son dosya sürümü.

Bir seçeneğin tamamını kabul etmek için >> veya << oklarına (ya da iptal etmek için çarpı işaretlerine) tıklayabilirsiniz. İsterseniz doğru metni doğrudan orta panele de yazabilirsiniz.
Orta paneldeki sonucu kontrol edip Apply düğmesine veya işlemi tamamlayan karşılık gelen düğmeye tıklayın. Ardından Git durumuna bakın: birleştirme henüz commit edilmediyse IDE üzerinden commit edin. Çatışma satırlarını çözmekle merge işlemini tamamlamak farklı adımlardır. Ortaya çıkan kodun davranışını da kontrol edin.
Claude Code ile çalışırken çatışma oluşması bir arıza değildir: Claude durup yardımınızı isteyebilir veya değişiklikleri nasıl ayırabileceğinizi önerebilir. Bu çatışmayı da diğerleri gibi IDE'nin üç yönlü birleştirme aracıyla çözersiniz.
Çatışma neden bazen oluşmaz
Alıştırmada çatışma oluşmazsa ikinci branch'in hangi commit'ten oluşturulduğunu ve iki tarafın da aynı satırı farklı biçimde değiştirip değiştirmediğini kontrol edin. Git, ayrışmış branch'lerde bile uyumlu düzenlemeleri otomatik olarak birleştirebilir. Bir başka olasılık da fast-forward yapılabilen doğrusal bir geçmiş olmasıdır:
Örnek:
mainbranch'inde bir commit'iniz var (örneğin C1);mainbranch'inde "Harika Projem" metniyle yeni bir commit oluşturursunuz. Böylecemainbranch'i C2 commit'ini göstermeye başlar;mainbranch'inin mevcut konumundanfeature/new-titlebranch'ini oluşturursunuz; yeni branch de C2 commit'inden başlar;feature/new-titlebranch'inde "Süper Projem" metniyle bir commit oluşturursunuz. Bu branch ilerleyip C3 commit'ini gösterir;- hâlâ C2 commit'inde olan
mainbranch'ine dönüpfeature/new-titlebranch'iyle birleştirirsiniz.
Git, main branch'inin feature/new-title branch'inin doğrudan atası olduğunu görür: başka branch'te çalıştığınız sırada main'e yeni commit eklenmemiştir. Bu nedenle main işaretçisini doğrudan C3 commit'ine ilerletir; çatışma çıkmaz.
main branch'inin geçmişi feature/new-title branch'inin geçmişiyle ayrışmadan devam eder; bu yüzden Git main'i ileri alır ve çatışma oluşmaz.
Değişiklik geçmişini görüntüleme
Projenizde neler olduğunu daha iyi anlamak için geçmişini incelemek faydalıdır.
Git aracının penceresini açın (genellikle sol kenar çubuğunda veya IDE penceresinin alt kısmında bir simge bulunur) ve Git araç çubuğunda Log veya Show Git Log sekmesini seçin. Tüm branch'lerin ve commit'lerin grafik gösterimini göreceksiniz. Böylece hangi branch'in nereden ayrıldığını ve nerede birleştirildiğini takip edebilirsiniz.

Burada herhangi bir commit'e tıklayarak hangi değişiklikleri içerdiğini, kim tarafından ve ne zaman oluşturulduğunu görebilirsiniz. Kodunuz için adeta bir zaman makinesi.
Claude Code'un yaptığı değişiklikler normal commit'lerle kaydedildiğinde bu geçmişe eklenir. Git Log'da kendi commit'lerinizle aynı şekilde görünürler; herhangi birini açıp nelerin değiştiğini kontrol edebilirsiniz.
Claude Code ile birlikte nasıl çalışır
Branch'leri anladıktan sonra Claude Code'un repository'nizde çalışırken neler yaptığını takip etmek kolaylaşır. Bu teknolojiyi sizin için nasıl kullandığına ve nelere dikkat etmeniz gerektiğine bakalım:
- görev ve proje kuralları gerektiriyorsa ayrı bir branch oluşturur;
- önemli noktalarda
commitoluşturmayı önerir; diff'i okuyup kabul etmeye veya düzeltmeye siz karar verirsiniz; - gereken kaydedilmiş commit'i bulmanıza ve commit edilmemiş değişiklikleri göz önünde bulundurarak geri dönme yöntemini seçmenize yardımcı olur;
- birleştirme çatışmasında yardımınızı isteyebilir; çözüm yine aynı IDE aracıyla yapılır;
- pull request hazırlayıp yorumlayabilir (PR, bir branch'i ana branch'e birleştirme önerisidir; örneğin GitHub CLI üzerinden açılır).
Onaylamadan önce diff'i inceleyin; özellikle Claude dosya silmeyi veya merge yapmayı önerdiğinde. Böylece projenin geçmişine tam olarak neyin ekleneceğini bilirsiniz.
Önceki makale: Git ile günlük çalışma · Sonraki makale: Pull request oluşturma ve birleştirme
GO TO FULL VERSION