Ana içeriğe atla

Git Rebase: Sürüm Kontrolünü Kolaylaştırmak İçin Başlangıç Kılavuzu

Commit geçmişinizi temiz tutmak ve iş birliğini geliştirmek için Git rebase kullanmayı öğrenin. Bu kılavuz, Git’te dalları rebase ederken adım adım yönergeler, en iyi uygulamalar ve kaçınılması gereken yaygın hataları kapsar.
Güncel 3 Eki 2026  · 8 dk. oku

Yapay Zeka ile Keşfedin

ChatGPTClaudePerplexity

Sürüm kontrolü, modern yazılım geliştirmesinin en önemli unsurlarından biridir. Değişiklikleri izlemenizi, verimli şekilde iş birliği yapmanızı ve kod geçmişini korumanızı sağlar. Mevcut çeşitli araçlar arasında Git, kod değişikliklerini yönetmek için en yaygın kullanılan sistemlerden biri olarak öne çıkar.

Bizim Git’e Giriş kursumuzdan da göreceğiniz gibi, Git; ana kod tabanını etkilemeden farklı özellikler veya düzeltmeler üzerinde çalışmak için dallanmalar sunar. Dallanma geliştirmeyi esnekleştirirken, dalları düzenli tutmak zaman zaman zor olabilir. İşte burada Git rebase devreye girer.

Git Dallarını Anlamak

Bizim Git ve GitHub rehberimizde ele aldığımız gibi, dallar yeni özellikler veya hata düzeltmeleri üzerinde ana kod tabanından bağımsız çalışmanıza olanak tanır. Diğer dallardaki devam eden çalışmaları aksatmadan değişiklik yapabileceğiniz yalıtılmış bir ortam sağlarlar.

Yaygın dallanma iş akışlarından bazıları şunlardır:

  • Özellik dalları (feature branches): Yeni işlevler geliştirilip ana dala birleştirilmeden önce kullanılır.
  • Sürüm dalları (release branches): Yeni bir sürümden önce kodu stabilize etmek için kullanılır.
  • Acil düzeltme dalları (hotfix branches): Kritik sorunları gidermek için oluşturulur.

Bu dalları etkili şekilde yönetmek, temiz ve düzenli bir kod geçmişi sürdürmek için kritik öneme sahiptir.

Understanding Git branches

Git Rebase Nedir?

Git rebase, bir daldaki commit’leri başka bir dalın üzerine taşımaya veya yeniden uygulamaya yarayan bir komuttur. Farklı dallardaki değişiklikleri birleştirerek yeni bir commit oluşturan merge’ün aksine, rebase değişiklikleri hedef dalın üzerine tek tek uygular. Bu da gereksiz birleştirme commit’leri olmadan doğrusal bir geçmişle sonuçlanır.

Rebase sırasında Git, kaynak daldaki her commit’i alır ve hedef dalın en son commit’inin üzerine uygular. Bu, commit geçmişini okumayı ve takip etmeyi kolaylaştırır. Bir deponun tüm commit geçmişini nasıl göreceğimiz hakkında daha fazla bilgiyi Git Diff Rehberi’nde ele alıyoruz. 

What is Git rebase?

Neden Git Rebase Kullanılır?

Rebase’in yararlı olmasının birkaç nedeni vardır:

  • Doğrusal bir commit geçmişi oluşturur. Birden çok birleştirme commit’inin yer aldığı bir geçmiş yerine, rebase commit günlüğünü temiz ve anlaşılır tutar.
  • İş birliğini ve kod incelemesini iyileştirir. Açık bir commit geçmişi, ekiplerin değişiklikleri daha etkili şekilde incelemesine yardımcı olur.
  • Gereksiz birleştirme commit’lerinden kaçınır. Merge yerine rebase yaparak dalları güncel tutabilir ve commit günlüğünü kalabalıklaştırmaktan kaçınabilirsiniz.

Bununla birlikte rebase, commit geçmişini yeniden yazdığı ve çatışmalara yol açabileceği veya değişiklikleri takip etmeyi zorlaştırabileceği için özellikle paylaşılan dallarda riskli olabilir. Genel erişime açık dallarda rebase’ten kaçınmak ve iş birliğine dayalı iş akışlarında dikkatli kullanmak en iyisidir.

Git Rebase Ne Zaman Kullanılır

Git rebase’in doğru tercih olduğu birkaç durum vardır. Aşağıda her birini ayrıntılı olarak inceledik. 

Yerel özellik dallarını rebase etmek

Bir özellik dalında çalışırken, onu ana daldaki en son değişikliklerle güncellemek yaygındır. Özellik dalı commit’lerini en güncel ana dalın üzerine yerleştiren rebase, merge’e alternatif olarak temiz bir commit geçmişi korumanıza yardımcı olur.

Özellik dallarını güncel tutmak

Aynı depoda birden fazla geliştirici çalıştığında ana dal sık sık değişir. Rebase, gereksiz birleştirme commit’leri eklemeden özellik dalını güncel tutmaya yardımcı olur.

Ekip iş birliğinde rebase

Ekip içinde çalışırken rebase, çatışmaları oluşmadan önce önlemeye yardımcı olabilir. Bir özellik dalını düzenli olarak ana dalın üzerine rebase ederek değişiklikleri kademeli olarak entegre edebilir, ileride yaşanacak birleştirme çatışmalarının riskini azaltabilirsiniz.

Git Rebase İçin Adım Adım Kılavuz

Bu bölümde sizi Git ile rebase sürecinde adım adım yönlendirecek, bilmeniz gereken her şeyi anlatacağız.

Step-by-step guide to Git rebase

Rebase’e hazırlanma

Rebase’e başlamadan önce çalışma dizininin temiz olduğundan emin olun. Bu, rebase’ten önce yaptığınız değişiklikleri commit etmeniz veya geçici olarak saklamanız (stash) gerektiği anlamına gelir. 

Git Rebase with Unstage Changes

Ayrıca, aşağıdaki komutu çalıştırarak doğru dalda olduğunuzu kontrol edin:

git branch

En son değişiklikleri çekmek

Rebase’ten önce yerel deponuzun uzak depodaki en son değişikliklere sahip olduğundan emin olun:

git fetch origin

Özellik dalına geçmek

Rebase edilmesi gereken özellik dalına geçin:

git checkout your-feature-branch

Ana dalın üzerine rebase etmek

Özellik dalı commit’lerini en güncel ana dalın üzerine uygulamak için şunu çalıştırın:

git rebase main

Git, özellik dalındaki her commit’i güncellenmiş ana dalın üzerine yeniden uygular.

Applying Git Rebase Successfully

git rebase main komutunu çalıştırdığınızda Git, ana daldaki değişiklikleri alır ve özellik dalınızın commit’lerinden önce uygular. Bu, geçmişinizi temiz ve doğrusal tutar. Bu süreç, commit’lerinizi main’in en son durumu üzerine tekrar oynatarak birleştirme commit’leri olmadan doğrusal bir proje geçmişi oluşturur.

Örneğin ana dalda A ve B commit’leri olsun. Özellik dalınız A’dan ayrıldı ve C ile D commit’lerini içeriyor olsun. 

A---B  (main)
 \
  C---D  (feature)

git rebase main sonrasında, özellik dalınız main’den gelen commit’lerin ve ardından kendi commit’lerinizin yer aldığı şekilde güncellenir:

---B---C'---D'  (feature)

Burada C ve D, özgün değişikliklerinizi temsil eden ve artık B’nin üzerine dayanan yeni commit’lerdir.

Çatışmaları çözmek (varsa)

Rebase sırasında çatışmalar ortaya çıkarsa Git durur ve onları çözmenize izin verir. 

Çözdükten sonra çatışmaları çözüldü olarak işaretleyin:

git add .
git rebase --continue

Gerekirse rebase’i şu komutla iptal edebilirsiniz:

git rebase --abort

Rebase’i tamamlama

Başarılı bir rebase’ten sonra dalı doğrulayın ve her şeyin doğru çalıştığından emin olmak için kodu test edin.

Git’te etkileşimli rebase

Önceki bölümde yaptığınız yaygın rebase’in yanı sıra etkileşimli rebase de yapabilirsiniz. Aşağıda göreceğiniz üzere bu yöntem size daha fazla kontrol sağlar. 

Etkileşimli rebase nedir?

Etkileşimli rebase git rebase -i, commit’leri uygulamadan önce değiştirmenize izin verir. Bu mod; commit’leri yeniden sıralama, düzenleme, birleştirme (squash) ve kaldırma gibi seçenekler sunar.

Neden etkileşimli rebase kullanılır?

Etkileşimli rebase, commit geçmişini iyileştirirken kullanışlıdır. Birden fazla commit’i birleştirmenize, commit mesajlarını düzenlemenize ve ana dala birleştirmeden önce gereksiz commit’leri kaldırmanıza yardımcı olur.

Etkileşimli rebase’in yaygın kullanımları

  • Commit’leri yeniden sıralama. Geçmişi daha anlaşılır kılmak için commit’lerin sırasını değiştirin.
  • Birden çok commit’i birleştirme. Birkaç küçük commit’i anlamlı tek bir commit’te toplayın.
  • Commit mesajlarını düzenleme. Değişiklikleri göndermeden önce commit mesajlarını değiştirin. Kodda nelerin güncellendiğini netleştirmek için uygun commit mesajları yazmak önemlidir; bunu GIT Push ve Pull eğitimimizde gösteriyoruz. 

Etkileşimli rebase nasıl yapılır

Etkileşimli rebase’i başlatmak için şunu çalıştırın:

git rebase -i HEAD~n

n değerini değiştirmek istediğiniz commit sayısıyla değiştirin. Etkileşimli arayüz, her commit’i nasıl ele alacağınızı seçmenize olanak tanır.

En iyi uygulamalar ve dikkat edilmesi gerekenler

Rebase yaparken bazı en iyi uygulamalara uymak önemlidir. Bu bölümde bunların bazılarını ele alalım. 

Paylaşılan dalları rebase etmekten kaçının

Başkalarının üzerinde çalıştığı bir dalı rebase etmek çatışmalara ve kafa karışıklığına yol açabilir. Paylaşılan bir dal zaten gönderildiyse (push), rebase etmekten kaçının.

Düzenli olarak fetch ve rebase yapın

Bir özellik dalını ana daldaki en son değişikliklerle güncel tutmak, çatışmaları önlemeye yardımcı olur ve birleştirmeyi daha sorunsuz hale getirir.

Rebase’ten önce yedek alın

Rebase, commit geçmişini değiştirdiğinden, başlamadan önce yedek almak iyi bir uygulamadır. git stash kullanmak veya geçici bir dal oluşturmak, kazara veri kaybını önleyebilir.

Yaygın tuzaklar ve bunlardan nasıl kaçınılır

Rebase yaparken karşılaşılan yaygın zorluklara ve bunlardan nasıl kaçınılacağına bakalım. 

Yanlışlıkla herkese açık bir dalı rebase etmek

Daha önce paylaşılmış bir dalı rebase etmek, diğer katkıda bulunanlar için çatışmalar yaratabilir. Böyle bir durumda, kaybolan commit’leri kurtarmak için git reflog kullanın.

Çatışmaları çözmede zorluklar

Çatışmalar oluştuğunda, bunları dikkatlice çözmek için zaman ayırın. git mergetool gibi araçları kullanmak süreci kolaylaştırabilir.

Commit geçmişini kaybetmek

Rebase’ten sonra commit’ler kaybolursa, onları bulup geri yüklemek için git reflog kullanın.

Sonuç

Git rebase, temiz bir commit geçmişi sürdürmek ve iş birliğini geliştirmek için güçlü bir araçtır. Bunu doğru şekilde kullanarak—paylaşılan dalları rebase etmekten kaçınarak, güncellemeleri düzenli olarak çekip rebase ederek ve değişiklikleri yedekleyerek—sürüm kontrolünü kolaylaştırabilir ve birleştirme çatışmalarını azaltabilirsiniz.

Bu teknikleri uygulayarak depolarınızı düzenli, iş akışlarınızı verimli tutun. Git uzmanlığınızı derinleştirmek ister misiniz? Orta Düzey Git kursumuza göz atın ve yazılım ile veri projelerinizde sürüm kontrolünün temellerini keşfedin.

Git Rebase SSS

Git rebase ile Git merge arasındaki fark nedir?

Git merge, iki daldaki değişiklikleri birleştiren yeni bir commit oluşturur ve her iki geçmişi de olduğu gibi korur. Git rebase ise bir daldaki commit’leri alıp başka bir dalın üzerine ardışık olarak uygular; böylece ekstra birleştirme commit’leri olmadan doğrusal bir commit geçmişi elde edilir.

Git merge yerine ne zaman Git rebase kullanmalıyım?

Özellikle özellik dalları için temiz ve doğrusal bir commit geçmişi korumak istediğinizde Git rebase kullanın. Özellik dalını ana dala birleştirmeden önce gereksiz birleştirme commit’lerinden kaçınmak için özellikle uygundur. Ancak paylaşılan dallarda rebase yapmaktan kaçının; commit geçmişini yeniden yazdığı için ekip arkadaşlarınız için sorunlara neden olabilir.

Git rebase sırasında çatışmalarla karşılaşırsam ne olur?

Rebase sırasında bir çatışma oluşursa Git durur ve sizi çatışmaları çözmeniz için yönlendirir. Çatışmalı dosyaları elle düzeltmeniz, git add . ile sahnelemeniz ve ardından git rebase --continue ile rebase’e devam etmeniz gerekir. Çatışmalar çok karmaşıksa, git rebase --abort komutuyla rebase’i iptal edip baştan başlayabilirsiniz.

Uzak depoya gönderilmiş bir dalı rebase etmek güvenli midir?

Hayır, başkalarıyla paylaşılıp uzak depoya gönderilmiş bir dalı rebase etmek güvenli değildir; çünkü commit geçmişini yeniden yazar. Paylaşılan bir dalı mutlaka rebase etmeniz gerekiyorsa, ekibinizle iletişim kurun ve başkasının değişikliklerinin üzerine yazmamak için git push --force-with-lease komutunu dikkatli kullanın.

Bir şeyler ters giderse Git rebase’i nasıl geri alabilirim?

Rebase’in sorun yarattığını fark ederseniz, rebase’ten önceki commit’i bulmak için git reflog kullanabilir ve git reset --hard <commit-hash> ile geri dönebilirsiniz. Başka bir seçenek de rebase hâlâ devam ediyorsa ve henüz tamamlanmadıysa git rebase --abort kullanmaktır.

Konular
Git

En İyi Git Kursları

Kurs

Git'e Giriş

2 sa
105.4K
Yazılım ve veri projelerinizde sürüm kontrolü için Git'in temellerini keşfedin.
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