Ana içeriğe atla

Git Reflog: Git’te Başvuru Günlüklerini Anlama ve Kullanma

git reflog’un, kaybolan commit’leri izlemeye ve kurtarmaya, hataları geri almaya ve dal geçmişini yönetmeye nasıl yardımcı olduğunu öğrenin. Git reflog’u ustalıkla kullanmak için pratik kullanım senaryolarını ve komutları keşfedin.
Güncel 3 Eki 2026  · 10 dk. oku

Yapay Zeka ile Keşfedin

ChatGPTClaudePerplexity

Bir geliştirici veya veri mühendisi için, istemeden git dallarını silmek ya da commit’leri resetlemekten daha sinir bozucu pek bir şey yoktur. Bu yüzden, kendi tecrübemle öğrendiğim ve keşke daha önce öğrenseydim dediğim bir konuyu, yani git reflog kullanımını paylaşmaktan memnunum. git reflog kesinlikle öğrenmeye değer tekniklerden biridir; şimdi biraz zaman ayırırsanız, ileride büyük bir baş ağrısından kurtulabilirsiniz. 

Hatalarda gezinmek ve toparlanmak için çok yararlı bulduğum git reflog’u göstereceğim; ayrıca sürüm kontrolü hakkında bilmeniz gereken her şeyi öğrenmek için Foundations of Git ve Introduction to GitHub Concepts kurslarımızı da öneririm.

git reflog Nedir?

Git reflog, yani başvuru günlüğü (reference log), bir Git deposunda dal uçlarına ve HEAD başvurusuna yapılan güncellemeleri kaydeden yerel bir izleme mekanizmasıdır. (Git bağlamında HEAD, çalışma dizininizin ve hazırlama alanınızın dayandığı mevcut commit’i ifade eder.)

git log’un, bir daldaki commit’lerin nasıl bağlandığını göstererek soy ağaç temelli commit geçmişini sergilemesinin aksine, git reflog HEAD’in tüm hareketlerini—dal değiştirmeler, rebase’ler, reset’ler ve commit’ler dahil—yakalar. Bu da reflog’u kaybolan commit’leri kurtarmak ve son işlemleri hata ayıklamak için faydalı kılar.

Reflog girdileri ne zaman oluşturulur?

HEAD’in veya dal başvurularının durumunu değiştiren işlemler yaptığınız her an reflog girdileri oluşturulur. Yaygın senaryolar şunlardır:

  • git commit ile değişiklikleri commit etmek.

  • git checkout branch_name kullanarak farklı bir dala geçmek.

  • git branch new_branch ile yeni bir dal oluşturmak.

  • Rebase yapmak git rebase

  • Önceki bir commit’e resetlemek git reset --hard.

  • Dalları git merge kullanarak birleştirmek.

Yerel depodaki güncellemeleri izlemek için kullanacağınız kod:

git reflog

Yerel depodaki güncellemeleri izlemek için git reflog kullanımı.

Yerel depodaki güncellemeleri izlemek için git reflog kullanımı. Görsel: Yazar.

git reflog çıktısını nasıl yorumlarsınız?

Çıktıyı şu şekilde yorumlayabilirsiniz:

  • HEAD@{0}: En son yapılan işlem HEAD dalına geçişti.

  • HEAD@{1}: Ondan önce, bir dosya türünü .xlxs’ten .csv biçimine çevirmiştim.

  • HEAD@{2}: Dosyaları depoya ittirirken ilk commit’i yaptım.

Her girdi şunları gösterir:

  • Commit özeti (hash) (fa82776)

  • Reflog indeksi (HEAD@{0}, HEAD@{1} vb.)

  • Yapılan işlemin açıklaması (commit, checkout, rebase)

git reflog Nasıl Kullanılır

Git reflog, başvuru güncellemelerini izleme ve deponuzun önceki durumlarını geri yükleme olanağı sağlar. Reflog girdilerinde nasıl gezineceğinizi anlayarak, kaybolan commit’leri kurtarabilir, değişiklikleri geri alabilir ve çalışmalarınızın geçmiş sürümlerini karşılaştırabilirsiniz. 

Temel git reflog komutu

Aşağıda temel reflog komutu yer alır:

git reflog

Yukarıdaki komut, commit’ler, dal değişimleri, reset’ler, rebase’ler ve daha fazlası dahil olmak üzere HEAD’i veya dal başvurularını güncelleyen yakın tarihli işlemlerin bir listesini görüntüler. Her girdi, reflog geçmişindeki konumunu temsil etmek üzere HEAD@{0} ve HEAD@{1} gibi bir indeksle etiketlenir.

Geçmiş durumlara başvurma

Git reflog, geçmiş başvuru güncellemelerinin bir kaydı olarak hizmet eder ve depomuzun geçmişindeki önceki noktaları bulup geri yüklememize olanak tanır. O olmadan bu başvurular mevcut olmazdı ve belirli geçmiş durumlara dönmek için tam commit özetlerine ihtiyaç duyardık. Şimdi, git checkout kullanarak Git’in bu geçmiş durumlarda nasıl gezinmemizi sağladığını inceleyelim.

HEAD@{n}: Belirli bir reflog girdisine atıfta bulunur; burada n indekstir. Örneğin, HEAD@{2} HEAD’in en son üç durumundan üçüncüsüne karşılık gelir.

git checkout HEAD@{2}

Geçmiş değişiklikleri izlemek için git checkout kullanımı.

Geçmiş değişiklikleri izlemek için git checkout kullanımı. Görsel: Yazar.

branch@{time}: Bir dalın belirli bir zamandaki durumuna atıfta bulunur. Örneğin, main@{1.week.ago} ana dalın bir hafta önceki durumunu, feature@{yesterday} ise feature dalının dünkü durumunu ifade eder.

git checkout main@{1.week.ago}

Geçmiş değişiklikleri izlemek için git checkout kullanımı.

Geçmiş değişiklikleri izlemek için git checkout kullanımı. Görsel: Yazar.

Zamana dayalı niteleyiciler

git reflog yalnızca geçmiş durumları geri yüklemeye yardımcı olmakla kalmaz, onları karşılaştırmamıza da olanak tanır. reflog başvuru güncellemelerini izlediğinden, depomuzun zaman içinde nasıl değiştiğini görmek için de kullanabiliriz. Şimdi, geçmiş ve mevcut durumları karşılaştırmak için reflog girdilerinden yararlanan git diff’e bakalım.

Aşağıdakiler, yalnızca reflog indeks numaralarına güvenmek yerine deponuzu belirli bir zamana geri yüklemeyi kolaylaştıran zaman niteleyicilerine örneklerdir.

git checkout HEAD@{1.minute.ago}     # Bir dakika önceki durum
git checkout HEAD@{1.hour.ago}       # Bir saat önceki durum
git checkout HEAD@{1.week.ago}       # Bir hafta önceki durum
git checkout HEAD@{yesterday}        # Dünkü durum
git checkout HEAD@{2024-01-01.12:00:00} # Belirli bir zaman damgasındaki durum

Geçmiş durumları git diff ile karşılaştırma

Geçmiş durumları git diff gibi komutlarla karşılaştırabilirsiniz. Aşağıdaki komut, ana dalın mevcut durumunu main@{0} ile bir gün önceki durumu main@{1.day.ago} arasında karşılaştırır. Çıktı, bu iki anlık görüntü arasındaki farkları gösterecektir.

git diff main@{0} main@{1.day.ago}

Geçmiş durumları git diff ile karşılaştırma.

Geçmiş durumları git diff ile karşılaştırma. Görsel: Yazar.

Git Reflog’un Yaygın Kullanım Alanları

Git reflog, kaybolan değişiklikleri kurtarmak, hataları geri almak ve yaygın Git aksiliklerini düzeltmek için paha biçilmez bir araçtır. Aşağıda git reflog’un yardımcı olabileceği bazı pratik senaryolar yer almaktadır.

Kötü bir reset’i geri almak

Dalınızı yanlışlıkla git reset --hard ile resetlediyseniz, önceki durumunuzu reflog ile geri yükleyebilirsiniz.

git reset --hard HEAD@{3}

Kaybolan commit’leri kurtarma

Bir dalı yanlışlıkla siler veya bir reset ya da rebase nedeniyle commit’leri kaybederseniz, git reflog ile kayıp commit’i bulabilirsiniz.

git reflog

Reflog çıktısından commit özetini (hash) bulun ve onu checkout edin:

git checkout <commit-hash>

Kayıp commit’i doğruladıktan sonra onu korumak için yeni bir dal oluşturabilirsiniz:

git branch recovered-branch <commit-hash>

Başarısız bir rebase’i düzeltme

Bir rebase ters giderse, git reflog ile rebase öncesi commit’i bulup dalınızı resetleyebilirsiniz. Rebase’ten önceki commit’i belirleyin ve resetleyin.

git reset --hard HEAD@{3}  # Reflog çıktısına göre sayıyı ayarlayın

Silinmiş bir dalı geri getirme

Bir dalı yanlışlıkla silerseniz, git reflog kullanarak onu kurtarabilirsiniz. Silinen dalın bilinen son commit’ini bulun ve yeniden oluşturun:

git branch restored-branch <commit-hash>

Stash geçmişini izleme

Git reflog, stash geçmişini görüntülemek için de kullanılabilir. Aşağıdaki komut stash işlemlerini listeler ve gerekirse eski stash’leri kurtarmanıza olanak tanır. 

git reflog stash

Önceki bir stash girdisini uygulamak için aşağıdaki komutu kullanın:

git stash apply stash@{2}

Yerel değişiklikleri üzerine yazmanın en iyi uygulamalarını öğrenmek için Git Pull Force: How to Overwrite a Local Branch With Remote eğitimimize göz atın.

Git Reflog Alt Komutları ve Seçenekleri

Git, reflog’ları yönetmek ve onlarla etkileşime geçmek için çeşitli alt komutlar ve seçenekler sunar. 

Git reflog alt komutları

Aşağıda temel git reflog alt komutlarının yapılandırılmış bir dökümü ve kullanımları yer alır.

git reflog show: Varsayılan olarak HEAD için veya bir dal gibi belirtilen bir başvuru için reflog girdilerini görüntüler.

git reflog show

Belirtilen başvuru için girdileri görüntülemek üzere git reflog show kullanımı.

Belirtilen başvuru için girdileri görüntülemek üzere git reflog show kullanımı. Görsel: Yazar.

git reflog list: Reflog’u olan tüm başvuruları görüntüler. Saklanan reflog girdilerine sahip dalları ve HEAD başvurularını belirlemek için kullanışlıdır.

git reflog list

git reflog delete <ref>@{<specifier>}: Belirtilen zaman sınırını aşan eski reflog girdilerini temizler. Örneğin, aşağıdaki komut 30 günden eski girdileri kaldırır.

git reflog expire --expire=30.days.ago

git reflog delete <ref>@{<specifier>}: Başvuru ve konumuna göre belirli bir reflog girdisini siler. Aşağıdaki komut, HEAD için 2 indeksindeki reflog girdisini kaldırır.

git reflog delete HEAD@{2}

git reflog exists <ref>: Belirli bir başvuru için reflog olup olmadığını doğrular. Örneğin, aşağıdaki komut ana dalda reflog varsa başarı döndürür.

git reflog exists main

git reflog alt komutları için seçenekler

Aşağıdakiler, git reflog alt komutları için mevcut seçenekler ve kullanımlarıdır.

--expire-unreachable=<time>: Yalnızca herhangi bir başvurudan erişilemeyen reflog girdilerini budar. Örneğin, aşağıdaki komut 7 günden eski erişilemeyen reflog girdilerini kaldırır.

git reflog expire --expire-unreachable=7.days.ago

--all: Yalnızca HEAD değil, tüm başvurular için reflog’ları işler. Aşağıdaki komut, tüm dallarda 60 günden eski tüm reflog’ları temizler.

git reflog expire --expire=60.days.ago --all

--dry-run: Komutun yürütülmesini simüle eder; gerçekte hiçbir şeyi silmeden nelerin budanacağını gösterir. Örneğin, aşağıdaki komut hangi girdilerin kaldırılacağını görüntüler.

git reflog expire --expire=30.days.ago --dry-run

--verbose: Komutun gerçekleştirdiği işlemler hakkında ayrıntılı çıktı sağlar. Aşağıdaki komut, eski reflog girdilerini süre sonlandırırken ayrıntılı bilgiler gösterir.

git reflog expire --expire=90.days.ago --verbose

Git Reflog ve Git Log: Temel Farklar

Hem git log hem de git reflog bir deponun geçmişine dair içgörüler sağlar, ancak farklı amaçlara hizmet ederler. Sürüm kontrolü ve kurtarma stratejilerinde her birinin nasıl kullanılacağını anlamak için bu farklara bakalım.

  • git log, bir daldaki commit’lerin soyunu takip ederek commit geçmişini gösterir. Deponun içeriğinin nasıl evrildiğine dair kronolojik bir görünüm sunar.

  • git reflog, dal değişimleri, reset’ler, rebase’ler ve daha fazlası gibi işlemler dahil olmak üzere HEAD, dallar ve stash’ler gibi başvurulara yapılan güncellemeleri kaydeder. Commit soyu içinde yer almayabilecek değişiklikleri takip eder.

  • git reflog kesinlikle makinenize özeldir ve uzak depolarla paylaşılmaz.

  • git log, artık dal soyunun parçası olmayan commit’leri kurtaramazken, git reflog başvuru güncellemelerini takip ederek, bu commit’ler herhangi bir daldan erişilemese bile, “kayıp” commit’leri kurtarmaya yardımcı olabilir.

Aşağıdaki tablo bu temel farkları özetler.

Özellik git log git reflog
Commit’leri izler Evet Hayır
Başvuru güncellemelerini izler Hayır Evet
Uzakta paylaşılır Evet Hayır
Kayıp commit’leri kurtarabilir Hayır Evet

Git Reflog Kullanımı için En İyi Uygulamalar

Git reflog, kayıp commit’leri kurtarmak ve geçmişle ilgili sorunları düzeltmek için güçlü bir araçtır; ancak etkili kullanımı dikkat gerektirir. Reflog ile çalışırken takip etmeniz gereken bazı en iyi uygulamalar şunlardır.

  • Reflog’u Kurtarma ve Hata Ayıklama için Kullanın: Bir dalı yanlışlıkla resetlediyseniz veya hatalı rebase yaptıysanız, önceki bir başvuruyu bulmak ve geri yüklemek için git reflog’u kontrol edin.

  • git reset --hard Kullanırken Dikkatli Olun: git reset --hard commit edilmemiş değişiklikleri kalıcı olarak kaldırabilir. Yanlış bir şey olması durumunda kurtarma yapabileceğinizden emin olmak için her zaman önce reflog’u kontrol edin.

  • Yıkıcı Komutları Çalıştırmadan Önce Yedek Alın: Veri kaybına karşı korunmak için Git depolarınızın otomatik yedeklemelerini uygulayın. Yedekleri her zaman güvenli ve harici bir konumda saklayarak donanım arızası veya diğer felaket durumlarında kurtarılabilirliği sağlayın.

  • Uzun Vadeli Kurtarma için Yalnızca Reflog’a Güvenmeyin: Varsayılan olarak, reflog girdileri 90 gün tutulur. Bu sürenin ardından çöp toplamaya tabi tutulabilir ve kurtarılamaz hale gelebilirler. Commit’lerinizi düzenli olarak uzak bir depoya ittirerek, yerel reflog’unuzun ötesinde korunmalarını sağlayın.

  • Eski Girdileri Yönetmek için git reflog expire Kullanın: Deponuzun reflog’u kalabalık hale gelirse, git reflog expire kullanarak daha eski veya erişilemeyen girdileri budayın.

Sonuç

Bir projenin geçmişini Git’te etkili şekilde yönetmek, yalnızca temel komutlardan fazlasını gerektirir. Başvuru güncellemelerini izleyen gelişmiş araçları keşfetmek, kaybolan commit’leri kurtarmak, silinen dalları geri yüklemek ve hataları düzeltmek için değerli bir güvenlik ağı sağlayabilir. Bu araçlarla, git reset, git checkout ve git revert gibi komutlarla pratik deneyim kazanmak, sürüm kontrolündeki yetkinliğinizi önemli ölçüde artırabilir.

Kurslarımızı almak yalnızca öğrenmenin harika bir yolu değil, aynı zamanda yazılım geliştirmeyi ciddiye aldığınızı işverenlere göstermenizin de harika bir yoludur. Bu amaçla, Tüm Seviyeler için En İyi 20 Git Mülakat Sorusu ve Cevabı blog yazımızı incelemenizi ve Git hakkında uzmanlaşmak için yeni Git Fundamentals yetkinlik yolumuzu takip etmenizi öneririm.


Allan Ouko's photo
Author
Allan Ouko
LinkedIn
Veri analitiği, iş zekâsı ve veri bilimi alanlarında pratik deneyime sahip Veri Bilimi Teknik Yazarı. SQL, Python, Power BI, Databricks ve veri mühendisliği üzerine, gerçek dünya analitik çalışmalarına dayanan, uygulamaya dönük ve sektöre odaklı içerikler yazıyorum. Yazılarım teknik derinlikle iş etkisi arasındaki köprüyü kurarak profesyonellerin veriyi güvenle karara dönüştürmelerine yardımcı olur.

git reflog SSS

Git reflog nedir?

Git reflog, dal uçlarına ve HEAD’e yapılan güncellemeleri takip eden bir başvuru günlüğüdür; kullanıcıların kayıp commit’leri kurtarmasına ve hataları geri almasına yardımcı olur.

Git reflog, Git log’dan nasıl farklıdır?

git log commit geçmişini izlerken, git reflog HEAD ve dallar gibi başvurulardaki değişiklikleri kaydeder.

Git reflog uzak depolarla paylaşılır mı?

Hayır, git reflog yereldir ve uzak bir depoya push edildiğinde paylaşılmaz.

Reflog commit edilmemiş değişiklikleri takip eder mi?

Hayır, reflog yalnızca başvurulardaki değişiklikleri takip eder ve commit edilmemiş çalışmaları kaydetmez.

Hangi işlemler reflog girdileri oluşturur?

Commit’ler, dal checkout’ları, reset’ler, rebase’ler, merge’ler ve stash işlemleri reflog girdileri oluşturur.

Reflog girdileri ne kadar süreyle saklanır?

Varsayılan olarak reflog girdileri 90 gün sonra sona erer, ancak bu yapılandırılabilir.

Konular
Git
Veri Mühendisliği

DataCamp ile git öğrenin

Kurs

Orta Düzey Git

2 sa
42.7K
Git kullanarak işbirliğine dayalı yazılım ve veri projelerinde sürüm kontrolü için dalları ve uzak depoları 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