Git Log, sade bir tabirle söyleyecek olursak projenin zaman tünelidir. Projede başlangıçtan bugüne kadar atılan tüm commit'leri (kayıt noktalarını) yeniden eskiye doğru gösterir.

Version Control System (VCS) içinde kim ne zaman, hangi değişikliği yaptı ve neden yaptı sorusunun cevabını git log komutu ve parametreleri ile buluruz.

Git Log Nasıl Kullanılır?

En basit haliyle Git log komutunu kullanmak için terminalde aşağıdaki komutu çalıştırmanız yeterlidir:

git log

Bu komut, bulunduğunuz repository içindeki tüm commit geçmişini listeler. Daha okunabilir bir çıktı için genellikle şu kullanım tercih edilir:

git log --oneline --graph
"Log ekranından çıkmak için klavyeden 'q' tuşuna basmanız yeterlidir."

Bir Git Log Çıktısının İçeriği Nasıldır?

En yalın haliyle git log yazınca ekranda şunları görürüz.

  • commit hash: Her kayda özel hash kimlik numarasıdır.
  • author (yazar): Değişikliği yapan kişinin adı ve email adresini görürüz.
  • date (tarih): Kaydın tam olarak hangi tarihte yapıldığını gösterir.
  • commit message: Değişikliği özetleyen o meşhur mesajdır. Commitler hakkında daha fazla bilgi için git commit message best practices yazımıza bakabilirsiniz.

Git Log Parametreleri ve Kullanımı (Örneklerle)

Yalın olarak git log kullanımı terminalimizi aşırı doldurabilir. Bu noktada parametrelerle daha sade ve spesifik bilgiler elde etmek mümkündür. git log komutu zengin parametre seçenekleri sunar ancak bunların bazıları sık kullanılır. Aslında daha az kullanılma sebebi işlevsiz olmaları değil ihtiyaca göre olmalarından kaynaklıdır. Git log komutunun parametrelerini görünüm/biçimlendirme (Visuals), filtreleme (Filtering), içerik ve detay analizi (Deep Dive), yapısal ve ilişkisel (Structural) olarak gruplayabiliriz. En sık kullanılan git log parametreleri şunlardır:

Git ekosisteminde parametreleri art arda kullanmak mümkündür; tek tek çalıştırmak yerine birleştirerek kullanabiliriz. Örneğin git log --oneline --graph --author "Ali" --since "1 week ago" gibi. Yani Ali'nin son bir haftada yaptığı işleri tek satırlık grafik yapısıyla göster demiş oluyoruz.
En çok kullanılan komut: git log --oneline --graph --decorate --all

1- Git Log Görünüm ve Biçimlendirme (Visuals) Parametreleri

  • Tek satırda görme: git log --oneline Her commit'i tek satıra sığdırır. Ekranda kısa hash ve commit mesajı gösterilir.
  • Görsel ağaç yapısı: git log --graph Dallanmaları (branching) ve birleşmeleri (merge) görsel bir ağaç yapısı şeklinde gösterir. Terminalde olabildiği kadar sanat yapmak gibidir :) Git Simülatöründe deneyin.
  • Commit hangi branch'e ait?: git log --decorate commit'lerin hangi branch ve tag'a ait olduğunu gösteren işaretçiler ekler.

2- Git Log Filtreleme (Filtering) Parametreleri

  • Zamana göre: git log --since "1 month ago" veya git log --after="2026-04-01" --before="2026-04-15" after başlangıç tarihini, before bitiş tarihini belirtir.
  • Kişiye göre: git log --author="İsim" sadece belirli bir kişinin yaptığı işleri listeler.
  • Mesaja göre: git log --grep="fixed bug" içinde istenen kelimeyi geçiren commit'leri listeler (Commit mesajı içinde arar).
  • Dosyaya göre: git log -- path/to/file sadece belirli bir dosyanın geçmişine odaklanmak istersek kullanırız. Dosyada kim ne değişiklik yapmış vb. görmemizi sağlar.
  • Miktara göre: git log -n 5 sadece son 5 adet commit'i getirir.

3- Git Log İçerik ve Detay Analizi (Deep Dive) Parametreleri

"Sadece mesajı değil, kodun içinde ne değiştiğini görmek istiyorum" dediğimizde devreye girer.

  • Kod değişikliklerini (diff) gösterir: git log -p veya --patch yapılan kod değişikliklerini satır satır gösterir.
  • Özet istatistik: git log --stat Hangi dosyalarda kaç satır eklendiğini veya silindiğini özet istatistik olarak verir.
  • Kod takibi: git log -S "fonksiyon_ismi" Git'in en profesyonel ve havalı özelliklerinden biridir. Bir fonksiyonun özelliğini değiştirdik ve ne zaman yaptığımızı unuttuk diyelim. Bu komut kodumuzun içinde o kodun eklendiği veya silindiği commit'leri bulur. Yani dosya içeriğine göre arama yapar commit mesajına göre değil!
  • Kodun tarihçesi: git log -L :fonksiyon_ismi:dosya.js Belirli bir fonksiyonun tüm tarihçesini izler.

4- Git Log Yapısal ve İlişkisel (Structural) Parametreleri

Projenin mimari akışını ve dallar arasındaki farkları/ilişkileri anlamak için kullanılırız.

  • Sadece geliştirme commit'leri: git log --no-merges listeyi sadeleştirme adına kalabalık yapan merge kayıtlarını gizleyebiliriz.
  • Sadece Merge Commit'lerini listele: git log --merges Sadece ama sadece merge commit'leri listeler. Genellikle büyük birleştirmeleri görmek için kullanılır.
  • Tüm uzak ve yerel branch'ler (dallar): git log --all sadece üzerinde çalıştığımız branch'i değil, tüm uzak ve yerel branch'lerin geçmişini birleştirir.

Git Log Ne İşe Yarar ve Neden Kullanılır?

Geriye Dönüş: Bir hata çıktığında veya herhangi bir sebepten zamanda yolculuk yapmamız gerekiyorsa bu komut ile yapabiliriz.
Hesap Verilebilirlik: "Bu kodu buraya kim yazdı?" sorusunun (nazikçe) cevabıdır.
Dokümantasyon: İyi yazılmış commit mesajlarıyla birleşince projenin gelişim sürecini anlatan bir kitaba dönüşür.

Git log, projemizin kara kutusudur. Her şey yolunda giderken bakılmaz ama bir "pislik" çıktığında ilk inceleyeceğimiz yer burasıdır. Burası sadece bir liste değil projemizin DNA'sını inceleyebileceğimiz bir mikroskoptur.

Git Log vs Reflog Arasındaki Fark Nedir?

Git Log, projenin commit geçmişini gösterir. Yani repository’nin “resmi tarihçesidir”. Git reflog ise yerel ortamımızda yaptığımız hareketleri (HEAD değişimleri, branch geçişleri, reset işlemleri vb.) kaydeder. Bu sayede yanlışlıkla silinen branch’leri veya geri alınan commit’leri tekrar bulabiliriz.

Pro Tip: Yanlışlıkla sildiğiniz bir commit'i bulamıyorsanız önce git reflog komutuna bakın.

Kısacası:

  • git log → commit geçmişi (herkesle paylaşılan tarih)
  • git reflog → lokal hareket geçmişi (sadece sende bulunan kayıt)